Suchfunktion im Editor

programmergirl

Grünschnabel
Hallo,
in der Schule sollen wir mit Hilfe von Delphi einen eigenen Editor schreiben, das ganze mit Memo...

Um meinen Editor etwas umfangreicher zu gestalten, würde ich gerne eine suchfunktion wie im standard windows editor einbringen. leider habe ich keine ahung wie das geht... kann mir jmd helfen?

MfG ProgrammerGirl
 
Hallo,

ich bin nicht sicher ob die Pos-Funktion auch Textstellen in einem Wort findet
(z.B "ino" in Dinosaurier).

Sollte das gehen, dann würde es einfach reichen das Memo Zeile für Zeile durchzulaufen und mit Pos zu suchen.

Code:
function SearchInMemo(sTxt : string) : integer;
var i : integer;
begin
   
    Result := -1;   //wenn nichts gefunden..

        for i:=0 to Memo1.Lines.Count-1 do
        begin
              if Pos(sTxt,Memo1.Lines[i]) <> -1 then
              begin
                   Result := i;   //etwas gefunden.
                   exit;
              end;
        end;
end;


Wenn das so funktioniert dann ganz gut... ansonsten wirds bissle aufwendiger.
Mir fällt keine passende Funktion ein, also basteln wir selber eine.

Code:
function SearchInMemo(sTxt : string) : integer;
var i            : integer;
     StrLength : integer;
begin
     Result := -1;
     StrLength := Length(sTxt);

    for i := 0 to (Length(Memo1.Lines.Text)-StrLength)-1 do
    begin
              if Copy(Memo1.Lines.Text,i,StrLength) = sTxt then
              begin
                   Result := i;
                   exit;
              end;
           
    end;

end;

Das dürfte eg funktionieren... is aber nich getestet. Hab das einfach mal so runtergeschrieben.

Wenn du wie beim Editor noch nach weiteren Vorkommnissen der Textstelle suchen willst, musst du bissle umbauen. Merk dir einfach die Stelle des letzten Vorkommens und such ab da weiter.

Wenns Fragen gibt einfach schreiben
gruß Kangaxx
 
Hallo,

mit
Code:
x := pos(GesuchterText, Memo1.Text)
sollte das erste Vorkommen des gesuchten Tetes gefunden werden.
Ein Weitersuchen ist aber damit nicht möglich. Dazu gibt es eine Sammlung von Funktionen. Suche im Internet nach FastStrings von Peter Morris, dort sollte es die nötigen Funktionen geben.

WieGehts
 

Neue Beiträge

Zurück