AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Speichern von Binären Bäumen in einer Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern von Binären Bäumen in einer Datei

Ein Thema von Sebastian92 · begonnen am 30. Aug 2009 · letzter Beitrag vom 31. Aug 2009
Antwort Antwort
Sebastian92

Registriert seit: 1. Mai 2008
Ort: Spiesen-Elversberg
35 Beiträge
 
#1

Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 15:50
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:
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;
mit freundlichen Grüßen,

Sebastian
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 15:54
Zitat von Sebastian92:
Funktioniert jedesmal perfekt. Allerdings ist in dieser Prozedur ein Wurm drin und ich weiß nicht wo der fehler liegt.
Hallo lieber Forenschreiber,

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?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Sebastian92

Registriert seit: 1. Mai 2008
Ort: Spiesen-Elversberg
35 Beiträge
 
#3

Re: Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 15:57
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
  Mit Zitat antworten Zitat
Sebastian92

Registriert seit: 1. Mai 2008
Ort: Spiesen-Elversberg
35 Beiträge
 
#4

Re: Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 15:58
mein Auslesen sieht twie folgt aus:

Delphi-Quellcode:
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;
p.s. Die Prozedur Clear, Löscht den Baum.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 17:54
Hallo Sebastian,

benutzt du zum Lesen der Daten wirklich die Standardprozedur Delphi-Referenz durchsuchenWrite?

Gruß Hawkeye
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Speichern von Binären Bäumen in einer Datei

  Alt 30. Aug 2009, 22:10
Zeig mal bitte die Definition des Feldes 'Inhalt' (Typ: TInhalt?)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Sebastian92

Registriert seit: 1. Mai 2008
Ort: Spiesen-Elversberg
35 Beiträge
 
#7

Re: Speichern von Binären Bäumen in einer Datei

  Alt 31. Aug 2009, 15:58
Delphi-Quellcode:
  TInformation = record
                   Name :String[20];
                 end;

  TInhalt = record
              Nummer : Integer;
              Information : TInformation;
            end;
TInformation steht für eine beliebigen record. In diesem Programm habe ich als Platzhalter einen String.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz