Announcement

Collapse
No announcement yet.

Wortsuche im memo.text - ( oder wie geht *X*)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wortsuche im memo.text - ( oder wie geht *X*)

    Hallo Alle!

    Diese Prozedur sollte unter anderem im Memo1.text wörter suchen, die das Zeichen '-'beinhalten, und die in Memo2.lines übertragen. Macht sie aber nicht.Meiner Logik nach müsste funktionieren, aber nach aufruf passiert einfach gar nichts.

    Woran liegt es??
    Es schmeisst noch nicht mal eine Fehlermeldung raus!

    procedure TForm1.Button1Click(Sender: TObject);
    var Txt:String;
    Wort:String;
    cnt:Integer;
    ExsistStrich:Boolean;
    ExsistZahl:Boolean;
    begin
    cnt:=0;
    Wort:='';
    ExsistStrich:=False;
    Exsistzahl:=False;
    txt:=Memo1.Text;
    while (cnt <= Length(txt)) do
    begin
    if (txt[cnt]=' ')or(ord(txt[cnt])<32) then
    begin
    //das Wort ist zu ende! -prüfe bedingungen
    if exsistStrich
    and not(Exsistzahl)
    and(wort[length(wort)-1]='e') // endet mit 'er'?
    and(wort[length(wort)]='r')
    // wenn ja...
    then memo2.Text:=Memo2.Text+' '+Wort;
    //Reset!
    Wort:='';
    ExsistStrich:=False;
    Exsistzahl:=False;
    end
    else
    begin
    if txt[cnt]='-'then Exsiststrich:=True;
    if (ord(txt[cnt])>=ord('0'))and(ord(txt[cnt])<=ord('9'))then
    exsistzahl:=true;
    Wort:=wort+txt[cnt];
    end;
    Inc(cnt);
    end;
    //letzte wort prüfen:
    if exsistStrich
    and not(Exsistzahl)
    and(wort[length(wort)-1]='e')
    and(wort[length(wort)]='r')
    then memo2.Text:=Memo2.Text+' '+Wort;

    end;

    end.

    //mfg.. [email protected]

  • #2
    Hi,

    also ich hab mir das mal angesehen. Auf jeden Fall solltest Du nochmals prüfen, ob du alle Anweisungs-Blöcke mit begin ... end; zusammengefaßt hast, die zusammengehören (vor allem nach If-Anweisungen).
    Desweiteren solltest Du in den If-Anweisungen die Operatoren <b>and</b> und <b>or</b> durch ein Leerzeichen von der Klammer trennen, da gibt es sonst manchmal Probleme.
    Außerdem erhält die Variable Wort nur Steuerzeichen wie #0 oder #13, keine richtigen Wörter, die dann übergeben werden könnten.

    Hab´s jetzt bischen umgeändert, mußt halt noch den Rest überprüfen, aber so funktionierts:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Txt,
    Wort : String;
    cnt : Integer;
    ExsistStrich : Boolean;
    ExsistZahl : Boolean;
    begin
    cnt:=0;
    Wort:='';
    ExsistStrich:=False;
    Exsistzahl:=False;
    txt := Copy(Memo1.Text, 0, length(Memo1.Text)-2);
    while (cnt <= Length(txt)) do
    begin
    if (txt[cnt] = ' ') or (ord(txt[cnt]) > 32) then // hab es auf größer gesetzt
    begin //das Wort ist zu ende! -prüfe bedingungen
    if (exsistStrich) and not(Exsistzahl) and (wort[length(wort)-1] = 'e')
    and (wort[length(wort)] = 'r') then
    begin
    memo2.Text := Memo2.Text+' '+Wort; //Reset!
    Wort := '';
    ExsistStrich := False;
    Exsistzahl := False;
    end
    else
    begin
    if (txt[cnt] = '-') then
    Exsiststrich := True;
    if (ord(txt[cnt]) >= ord('0')) and (ord(txt[cnt]) <= ord('9')) then
    Exsistzahl := true;

    Wort := wort+txt[cnt];
    end;
    end;
    Inc(cnt);
    end;
    //letzte wort prüfen:
    if (exsistStrich) and not (Exsistzahl)
    and (wort[length(wort)-1] = 'e')
    and (wort[length(wort)] = 'r') then
    memo2.Text := Memo2.Text+' '+Wort
    else
    ShowMessage('Ein Wert war nicht True!');
    end;

    mfg
    Björ

    Comment

    Working...
    X