AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Memo durchsuchen - Zeile in anderes Memo
Thema durchsuchen
Ansicht
Themen-Optionen

Memo durchsuchen - Zeile in anderes Memo

Ein Thema von Ari · begonnen am 4. Feb 2007 · letzter Beitrag vom 4. Feb 2007
Antwort Antwort
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#1

Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:02
Hallo

hab mich jetzt ein paar Stunden totgesucht, das einzige was ich gefunden hab hat aber immer eine Fehlermeldung hervorgerufen (hab die Befehle dann in die Zwischenablage kopiert und irgendwann waren sie weg -.-) und konnte keine Stellen der gesuchten Zeile in ein Label eintragen.

Möchte ein mehrzeiliges Memo nach einem Text wie "presolved problem has" durchsuchen. Aus der gleichen Zeile sollen dann die 23. bis 25. Stellen in ein Label eingelesen werden. Habs bereits mit einem Umweg über ein anderes Memo versucht aber auch das ging nicht.

Bitte helft mir!

edit: achja, ein Beispiel, hab versucht die bisherigen Befehle zu rekonstruieren:

Delphi-Quellcode:
    Memo3.Lines.Clear;
    for i:=0 to Memo1.Lines.Count-1 do begin
zz := Pos('presolved problem has', Memo1.Lines[i]);

    Memo3.Lines.Add(Memo1.Lines[zz]);
    end;
Mir wird in dem Memo3 aber nur die erste Zeile des Memos angezeigt. der gesuchte Text ist aber in jedem Fall vorhanden!
Ariane
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#2

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:03
Mit Delphi-Referenz durchsuchenPos nach dem Suchbegriff suchen (mit for-Schleife Memo durchgehen) und per Delphi-Referenz durchsuchenCopy in Label kopieren.
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#3

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:09
Oben der Versuch, geht aber nicht. zudem hat er ein "EConvert" (???) Problem bei

Delphi-Quellcode:
Label87.Visible:=true;
   Label87.Caption := memo3.Lines.Strings[1][21]+memo3.Lines.Strings[1][22]+memo3.Lines.Strings[1][23];
- hat vielleicht etwas damit zu tun, dass nicht die Zeile eingelesen wird, nach der ich gesucht habe, sondern komischerweise die erste

edit: i stellt doch einfach die Zeilen dar, also werden alle Zeilen des Memos von 1 bis Memo1.Lines.Count-1 durchsucht. Dann ist Pos(); die Zeile, in der der gesuchte Text gefunden wurde - oder? Oder stellt das die Häufigkeit bzw. das Vorkommen dieses Textes dar? Dann wäre es logisch, dass die erste Zeile eingelesen wird ~.-
Ariane
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#4

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:16
Ungefähr so, hab grad keine Lust das zu testen:

Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count-1 do
begin
 if Pos(Memo1.Lines[i], 'suchbegriff') <> 0 then Label1.Caption := Copy(.....
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:17
Hallo,

Pos() liefert dir die Position in der Zeile i, an der dein gesuchter Text beginnt - oder 0, wenn ich deiner Online Hilfe glauben darf.

Delphi-Quellcode:
begin
  Memo3.Lines.Clear;
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    zz := Pos('presolved problem has', Memo1.Lines[i]);
    if zz > 0 then
    begin
      Memo3.Lines.Add(Copy(Memo1.Lines[i], 23, 3));
      Exit;
    end;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#6

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:28
Danke!! Im Memo werden jetzt die 3 richtigen Stellen angezeigt. Jetzt meckert er aber wegen dem Label. Möchte über die Zahl, die in Memo3 eingelesen wird, Bedingungen erstellen, wenn sie ungleich 0 ist und wenn sie größer 0 ist. Ich bekomme es nichtmal hin, dass das Label einfach diese drei Zahlen übernimmt:

   Label87.Caption := memo3.Lines[1]; bzw.
   Label87.Caption := memo3.Lines.Strings[1][1]+memo3.Lines.Strings[1][2]+memo3.Lines.Strings[1][3]; Bekomme sogar je nach Code zwei unterschiedliche Fehlermeldung, einmal EConvertError (1) und Accessviolation (2).

Könnt ihr mir bitte noch einmal helfen?

edit: ok, es funktioniert mit
if Memo3.Lines.Add(Copy(Memo1.Lines[i], 23, 3))=0 aber auch wenn die Zahl 0 ist, wird die else Bedingung ausgeführt *verzweifel*
trotzdem möchte ich die Zahl gerne in ein Label kopiert haben :-/
Ariane
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:36
Wenn die Zahl, die du ins Memo3 übernommen hast, auch auf einem Label87 erscheinen soll, dann so:

Delphi-Quellcode:
var
  s: String;
  n: Integer;
begin
  Memo3.Lines.Clear;
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    zz := Pos('presolved problem has', Memo1.Lines[i]);
    if zz > 0 then
    begin
      s := Copy(Memo1.Lines[i], 23, 3);
      // n := StrToIntDef(s, -1);
      Memo3.Lines.Add(s);
      Label87.Caption := s;
      Exit;
    end;
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#8

Re: Memo durchsuchen - Zeile in anderes Memo

  Alt 4. Feb 2007, 22:56
Es funktioniert! Vielen lieben Dank marabu und Balu der Bär
Ariane
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz