Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memo durchsuchen - Zeile in anderes Memo (https://www.delphipraxis.net/85783-memo-durchsuchen-zeile-anderes-memo.html)

Ari 4. Feb 2007 21:02


Memo durchsuchen - Zeile in anderes Memo
 
Hallo :hi:

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!

Balu der Bär 4. Feb 2007 21:03

Re: Memo durchsuchen - Zeile in anderes Memo
 
Mit Delphi-Referenz durchsuchenPos nach dem Suchbegriff suchen (mit for-Schleife Memo durchgehen) und per Delphi-Referenz durchsuchenCopy in Label kopieren.

Ari 4. Feb 2007 21:09

Re: Memo durchsuchen - Zeile in anderes Memo
 
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 :gruebel:

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 ~.-

Balu der Bär 4. Feb 2007 21:16

Re: Memo durchsuchen - Zeile in anderes Memo
 
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;

marabu 4. Feb 2007 21:17

Re: Memo durchsuchen - Zeile in anderes Memo
 
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

Ari 4. Feb 2007 21:28

Re: Memo durchsuchen - Zeile in anderes Memo
 
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:

Delphi-Quellcode:
   Label87.Caption := memo3.Lines[1];
bzw.
Delphi-Quellcode:
   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
Delphi-Quellcode:
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 :-/

marabu 4. Feb 2007 21:36

Re: Memo durchsuchen - Zeile in anderes Memo
 
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

Ari 4. Feb 2007 21:56

Re: Memo durchsuchen - Zeile in anderes Memo
 
Es funktioniert! Vielen lieben Dank marabu und Balu der Bär
:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 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