tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
2144
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    programmergirl programmergirl ist offline Grünschnabel
    Registriert seit
    Oct 2006
    Beiträge
    1
    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
     

  2. #2
    Avatar von Kangaxx
    Kangaxx Kangaxx ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Ort
    Vaihingen an der Enz
    Beiträge
    88
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    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
     

  3. #3
    WieGehts WieGehts ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    130
    Hallo,

    mit
    Code :
    1
    
    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
     

Ähnliche Themen

  1. PHP-Suchfunktion
    Von uafsc im Forum PHP
    Antworten: 5
    Letzter Beitrag: 24.09.07, 16:58
  2. Wichtige Fragen und Große Probleme bei MDL Editor(Auch MED Editor)
    Von Samus Aran im Forum Sonstige 3D-Programme
    Antworten: 0
    Letzter Beitrag: 14.06.07, 18:41
  3. Suchfunktion
    Von ExtremeSnail im Forum PHP
    Antworten: 0
    Letzter Beitrag: 19.05.04, 11:28
  4. Eigenen Editor in Editor-Liste des IE hinzufügen
    Von MrPHP im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 10.05.04, 14:07
  5. Suchfunktion
    Von ExtremeSnail im Forum PHP
    Antworten: 7
    Letzter Beitrag: 07.05.04, 11:45