Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Speichern und Laden mit Delphi (https://www.delphipraxis.net/106349-speichern-und-laden-mit-delphi.html)

Matthes1988 9. Jan 2008 15:38


Speichern und Laden mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute.
Ich habe ein Problem. Bestimmt wurde diese Problematik schon oft hier erwähnt, aber ich weiss nicht genau wie ich vorgehen soll.
Das Projekt um das es geht, kennen bestimmt schon einige. Tiereraten.
Nun soll ich dabei jeweils neue Tiernamen und das dazugehöroge Attribut abspeichern, so dass die Liste bzw. der Binärbaum immer mehr wird. Der Tiername + Attribut soll in eine Editkomponente, in einem neuen Formular, eingegeben werden. Buttons zum laden und speichern sind schon vorhanden.

Das Projekt sieht bislang so aus:
Delphi-Quellcode:
  constructor TRateBaum.create(Tier_ja,Frage,Tier_nein:string);
  var l_Baum,r_Baum TBinTree;
  begin
    l_Baum:=TBinTree.create(tString.create(Tier_ja));
    r_Baum:=tBinTree.create(TString.create(Tier_nein));

    hBaum:= TBinTree.create(TString.create(Frage),l_Baum,r_Baum);
    kAktueller_Baum:=hBaum;
  end;

  function TRateBaum.liesAktuellenKnoten:string;
//  var hilf:TObject;
  begin
   //hilf := kAktueller_Baum.getRootItem;
  // result := TString(hilf);
   result:=  TString(kAktueller_Baum.getrootitem).lies_Inhalt;
  end;

  function TRateBaum.tierErreicht:boolean;
  var hilf1, hilf2 : TBinTree;
  begin
    hilf1 := kAktueller_baum.getLeftTree;
    hilf2 := kAktueller_Baum.getRightTree;
    if (hilf2.isempty) and (hilf2.isempty) then
    result := true;
   end;

  procedure TRateBaum.nach_rechts;
  begin
    kAktueller_Baum := kAktueller_Baum.getRightTree;
  end;

  procedure TRateBaum.nach_links;
  begin
    kAktueller_Baum := kAktueller_Baum.getLeftTree;
  end;

  procedure TRateBaum.zurueckSetzen;
  begin
    kAktueller_Baum:=hBaum;
  end;

  procedure TRateBaum.wissenErweitern(NeueFrage, NeuesTier:string; antwortJa:boolean);
  var Tier_alt,Tier_neu,Frage_neu:Tstring;
  begin
    Frage_neu:=TString.create(neueFrage);
    If AntwortJA then
     begin
      Tier_alt := TString(kaktueller_Baum.get_rootitem);
      kAktueller_Baum.setitem(Frage_neu);

      Tier_neu:= TString.create(NeuesTier);
      kAktueller_baum.getrightTree.create(Tier_alt);

      kAktueller_Baum.getlefttree.create(Tier_neu);
     end
    else
     begin
      Tier_alt := TString(kaktueller_Baum.get_rootitem);
      kAktueller_Baum.setitem(Frage_neu);

      Tier_neu:= TString.create(NeuesTier);
      kAktueller_baum.getleftTree.create(Tier_alt);

      kAktueller_Baum.getrighttree.create(Tier_neu);
     end;
  end;
       TMemo



 procedure TRateBaum.speicher(B:TBinTree);

   end;


  procedure TRateBaum.speichern;    // savefileto..
  begin
 //
  end;

 procedure TRateBaum.lade(B:TBinTree);
  begin
   //
  end;

  procedure TRateBaum.laden;            //load bzw. ladenfilefrom
  begin
   //
  end;

  destructor TRateBaum.destroy;
  begin
    //
  end;

end.

s-off 9. Jan 2008 15:41

Re: Speichern und Laden mit Delphi
 
Hallo.
Zitat:

Zitat von Matthes1988
Ich habe ein Problem.

Hast Du es im Quelltext versteckt? In Deiner 'Problem'beschreibung habe ich nämlich keines gefunden :zwinker:

Matthes1988 9. Jan 2008 15:48

Re: Speichern und Laden mit Delphi
 
Das Problem ist, dass ich nicht weiss wie genau ich das Laden und Abspeichern (im Quelltext ist es halt leer mit //) programmieren bzw. implementieren soll.
Nun die hoffentlich verständliche Frage ;-): Wie bekomme ich das speichern und laden hin?

RavenIV 9. Jan 2008 15:51

Re: Speichern und Laden mit Delphi
 
Ich verweise mal auf diesen Beitrag, weil ich mich nicht gerne wiederhole.
http://www.delphipraxis.net/internal...t.php?t=126254

shmia 9. Jan 2008 16:01

Re: Speichern und Laden mit Delphi
 
Du hast also hierarchische Daten, da du eine Baumstruktur laden und speichern möchtest.
Man kann hierarchische Daten auch als flache Struktur speichern, indem man jedem Knoten eine ID gibt:
Code:
Node | Parent | Daten
=====================
    1       -1  Tier
    2        1  Säugetier
    3        2  Primaten
    4        1  Wirbellose
    5        4  Spongebob Squarepants
Diese Daten könnte man z.B. in eine Datenbanktabelle, Ini-Datei oder einer CSV-Datei speichern.
Wenn man eine CSV-Datei haben möchte, wird man selbstverständlich TStringList verwenden.

Wesentlich schöner ist allerdings, wenn man gleich XML zu Speichern verwendet.

Welchen Weg möchtest du also gehen ?

grenzgaenger 9. Jan 2008 23:35

Re: Speichern und Laden mit Delphi
 
oder du serialisierst dein objekt. dann kannste es in einem rutsch laden und speichern. dazu muss es jedoch von der klasse tpersistent (hoffentlich richtig geschrieben) abgeleitet sein.

Luckie 10. Jan 2008 08:16

Re: Speichern und Laden mit Delphi
 
Für so was bieten sich eigentlich XML-Dateien an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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