Hallo an alle,
ich bin neu hier im Forum und hab auch gleich eine Frage. Wir sollen ein Prgogramm schreiben, dass Worte aus einem Memofeld einliest, dabei gleich sortiert (LIFO, FIFO, alphabetisch) und zur Kontrolle wiederum im Memofeld ausgibt. Dann sollen wir Worte suchen, einfügen und löschen können. Und da ist mein Problem:
Ich habe die Suchfunktion ausgereizt, aber nichts Passendes gefunden. Mein Problem ist sowieso, dass ich alle angehängten Dateien in meiner Delphi-Version nicht öffnen kann.
Also, wenn ein Wort mitten in der Liste steht, kann ich es löschen. Merkwürdigerweise wird dann bei der Ausgabe das letzte Wort verdoppelt. Das funktioniert schon mal nicht ganz. Mir ist klar, dass ich eine Fallunterscheidung machen muss. Denn wenn das erste oder das letzte Element betroffen sind, muss ich andere Dinge ausführen. Bspw. wenn das letzte Element betroffen ist, wird das vorletzte nil...
Aber ich komme einfach nicht weiter. Hier mal mein Quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| procedure TForm1.Lschen1Click(Sender: TObject);
var geloescht: boolean; i, j: integer;
begin hilfe:= wurzel; lauf:= hilfe^.rechts; geloescht:= false; repeat if wurzel^.inhalt= Edit1.text then begin lauf:= wurzel; wurzel:= wurzel^.rechts; dispose(lauf); geloescht:= true; end else if (lauf^.inhalt = Edit1.text) and (lauf^.rechts<>nil) then begin hilfe^.rechts:= lauf^.rechts; dispose(lauf); geloescht:= true; end else if (lauf^.inhalt = Edit1.text) and (lauf^.rechts = nil) then begin hilfe^.rechts:= nil; dispose(lauf); geloescht:= true; end else begin lauf:= lauf^.rechts; hilfe:= hilfe^.rechts; end; until geloescht= true; Lauf:= wurzel; j:= 0; for i:= 1 to 9 do Memo2.Lines.Add(''); repeat Memo2.Lines[j]:= lauf^.inhalt; lauf:= lauf^.rechts; inc(j); until lauf= nil; end; |
Es wäre sehr schön, wenn mir jemand helfen könnte.
Liebe Grüße
elsebaer