Thema: Delphi Name aus Liste löschen

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Name aus Liste löschen

  Alt 14. Nov 2005, 22:25
Hallo Olli,

deine Suchschleife für die doppelt verkettete Liste sieht noch etwas merkwürdig aus. Für eine solche Funktion überlegt man sich - wie stets - was geht rein, was soll raus kommen? such ist konstant, lauf ist variabel. Die Vorbedingung für lauf ist "lauf = oben", das hast du schon mal richtig gemacht. Hast du dir eigentlich jemals Gedanken über die Nachbedingung gemacht?

Delphi-Quellcode:
procedure TSkispringen.bt_springer_loeschenClick(Sender: TObject);
var
  lauf: TZeiger;
  such: String;
BEGIN
  such := InputBox('Eingabe', 'Name', '');

  // precondition: lauf = oben
  lauf := oben;
  WHILE (lauf <> nil) AND (such <> lauf^.name) DO
    lauf := lauf^.nachher;
  // postcondition:
  // lauf = nil g.d.w. nicht gefunden
  // lauf <> nil g.d.w. lauf^.name = such


  // Und auch der eigentliche Aktionsteil
  // sieht aufgeräumt aus, wenn du weißt, was du tust

  IF NichtGefunden THEN
    ShowMessage('hä?')
  ELSE
  BEGIN
    IF EsGibtEinenNachfolger THEN
      lauf^.nachher^.vorher := lauf^.vorher;

    IF EsGibtEinenVorggänger
      THEN lauf^.vorher^.nachher := lauf^.nachher
      ELSE EsGibtEinenNeuenErsten;

    // Kannst Speicher ruhig wieder freigeben
    // Brauchst ihn ja doch nicht mehr
    Dispose(lauf);
    Ausgabe();
  END;
END;
Grüße vom marabu
  Mit Zitat antworten Zitat