Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

Re: Komplizierte suche in Memo ! Hilfe

  Alt 19. Nov 2008, 14:14
Also entweder bin ich oder ihr habt jetzt den Nitron gemacht.

Ich dachte, der möchte in einem Memo-Feld etwas suchen ... da frage ich mich, warum ihr dem sagt, er soll mit StringReplace was machen, und vor allem das Ergebnis von StringReplace wieder in das Memo schreiben

Also die Funktion klaue ich einfachmal
Delphi-Quellcode:
procedure SelectLine (Memo: TMemo; index: integer);
var
  i: integer;
  start, fin: integer;

begin
  start:= 0;
  fin:= length(Memo.lines[index]);
  for i:= 0 to index -1 do begin
    start:= start + length(Memo.Lines[i]) + 2;
  end;
  memo.SetFocus;
  Memo.SelStart:= start;
  Memo.SelLength:= fin;
  // ShowMessage(memo.SelText);
end;
Delphi-Quellcode:
function SuchenInMemo( Memo : TMemo; FindenStr, NichtFindenStr : string; LastFindLine : integer = -1 ) : integer;
var
  LineIdx : integer;
begin
  LineIdx := LastFindLine + 1;
  Result := 0;
  while
    ( LineIdx < Memo.Lines.Count ) and
    ( Result = 0 )
  do
    begin
      if
        ( Pos( FindenStr, Memo.Lines[ LineIdx ] ) > 0 ) and
        ( Pos( NichtFindenStr, Memo.Lines[ LineIdx ] ) = 0 )
      then
        begin
          Result := LineIdx;
          SelectLine( Memo, LineIdx );
        end
      else
        Inc( LineIdx );
    end;
end;
Im Programm rufst du das so auf:
Delphi-Quellcode:
// Globale Variable oder Klassen-Variable deklarieren
var
  MyLastFindLine : integer;

// beim Klick auf den Suchen-Button diesen Code

  MyLastFindLine := SuchenInMemo( Memo1, Edit1.Text, Edit2.Text );

// Beim Klick auf Weitersuchen diesen Code

  MyLastFindLine := SuchenInMemo( Memo1, Edit1.Text, Edit2.Text, MyLastFindLine );
cu

Oliver

[edit]der fehler ist nun behoben[/edit]
[edit2]jetzt tut die function genau das was sie soll [/edit2]
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat