![]() |
Speichern von Binären Bäumen in einer Datei
Hallo liebe Forenleser,
Mein Problem bezieht sich (wie im Titel gesagt) auf einen binären Baum. Ich möchte Einen solchen Baum in eine Datei Schreiben. Funktioniert jedesmal perfekt. Allerdings ist in dieser Prozedur ein Wurm drin und ich weiß nicht wo der fehler liegt. Wahrscheinlich ist er sehr banal und dumm... TInhalt ist der Inhalt der Knoten des Baumes und dementsprechend auch der Variablentyp (file of TInhalt) der gespeichert werden soll, Zur Erklärung: zAktuell ist die "Wurzel" des Baumes, Inhalt wie oben gesagt Inhalt jedes Knotens und f mein Dateiname.
Delphi-Quellcode:
mit freundlichen Grüßen,
Procedure TBaum.SaveDatei(zAktuell :TZeiger);
var Inhalt :TInhalt; begin if(zAktuell<>nil) then begin SaveDatei(zAktuell^.zLinks); Inhalt:=zAktuell^.Inhalt; Write(sDatei,Inhalt); SaveDatei(zAktuell^.zRechts); end; end; Procedure TBaum.Save(f :String; zAktuell :TZeiger); begin if(zAktuell<>nil) then begin AssignFile(sDatei,f); if FileExists(f) then Reset(sDatei) else ReWrite(sDatei); SaveDatei(zAktuell); CloseFile(sDatei); end; end; Sebastian |
Re: Speichern von Binären Bäumen in einer Datei
Zitat:
Ich verstehe dein Problem nicht. Gleichzeitig perfekt laufen und trotzdem ist ein Wurm drin und ein Fehler? Welcher Wurm? Welcher Fehler? Wie liest du den Baum wieder ein? |
Re: Speichern von Binären Bäumen in einer Datei
Diese prozedur(en) Funktioniert bei anderen Programmen, die ich geschrieben habe einwandfrei... bei diesem Programm allerdings Schreibt er mir zwar etwas in die Datei rein, allerdings ist dies (so sieht es aus) überflüssiger Datenmüll... und ich kann mir nicht erklären warum
|
Re: Speichern von Binären Bäumen in einer Datei
mein Auslesen sieht twie folgt aus:
Delphi-Quellcode:
p.s. Die Prozedur Clear, Löscht den Baum.
procedure TBaum.LoadDatei(f :String);
var Inhalt :TInhalt; begin if FileExists(f) then begin Clear; Assignfile(sDatei,f); Reset(sDatei); while(not Eof(sDatei)) do begin Write(sDatei,Inhalt); Hinzu(Inhalt.Information); end; CloseFile(sDatei); end else MessageDlg('Datei existiert nicht',mtError,[mbOk],0); end; |
Re: Speichern von Binären Bäumen in einer Datei
|
Re: Speichern von Binären Bäumen in einer Datei
Zeig mal bitte die Definition des Feldes 'Inhalt' (Typ: TInhalt?)
|
Re: Speichern von Binären Bäumen in einer Datei
Delphi-Quellcode:
TInformation steht für eine beliebigen record. In diesem Programm habe ich als Platzhalter einen String.
TInformation = record
Name :String[20]; end; TInhalt = record Nummer : Integer; Information : TInformation; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz