Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem beim Speichern eines einer Klasse in Textdatei (https://www.delphipraxis.net/35268-problem-beim-speichern-eines-einer-klasse-textdatei.html)

changlee 4. Dez 2004 15:48


Problem beim Speichern eines einer Klasse in Textdatei
 
Hallo,
ich habe ein Problem beim speichern einer Variable.

Ich habe folgende Typdeklarationen geschrieben:

Delphi-Quellcode:
type
  TSpezial = record
    moeglich : boolean;
    hinweis: string[20];
    TextausMemo : TStrings;
  end;

  TDaten = record
    titel,Hinweis:string[20];
    TextAusMemo : TStrings;
    ready : boolean;
    spezielles: TSpezial;
  end;
Später weise ich den alle Werte zu und möchte diese Varaiable speichern.
Zum Speichern schrieb ich:

Delphi-Quellcode:
procedure TForm1.Speichern(Sender: TObject);
var index,n, i : integer;
    F : file of TDaten;
    Datensatz : TDaten;
begin
  Datensatz.Create;
  DatenZuweisen(Datensatz);
  assignfile(F,'test.txt');
  Rewrite(F);
  write(F,Datensatz);
  closefile(F);
  Datensatz.Free;
end;
Ich verstehe nicht, warum es nicht funktioniert. (Ich bekomme einen Fehler: Lesen von Adresse 00000 usw.)

Kann mir jemand sagen, woran es liegt, und wie es richtig geht?

Ich hab es auch schon mit einem Record probiert. Aber dann wird der Text aus aus den TStrings-Variablen scheinbar nicht korrekt gespeichert.

Wär nett, wenn mir jemand helfen würde..

mfg
changlee

Dax 4. Dez 2004 15:51

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Du kannst nicht den Konstruktor eines nicht existierenden Objekts aufrufen ;-)
So müsste es gehen:
Delphi-Quellcode:
procedure TForm1.Speichern(Sender: TObject);
var index,n, i : integer;
    F : file of TDaten;
    Datensatz : TDaten;
begin
  Datensatz := TDaten.Create;
  DatenZuweisen(Datensatz);
  assignfile(F,'test.txt');
  Rewrite(F);
  write(F,Datensatz);
  closefile(F);
  Datensatz.Free;
end;

sakura 4. Dez 2004 15:55

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Es ist leider ganz einfach gesagt: Du kannst Records mit Objekten (wie TStrings) nicht einfach so speichern. Da musst Du Dir einen anderen Ansatz suchen.

...:cat:...

moritz 4. Dez 2004 15:58

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Mir wurde damals gesagt, dass es mit packed records gehen würde...

changlee 4. Dez 2004 16:07

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Hallo,
ich habe oben einen kleinen Fehler gemacht. Meine Dypdeklaration lautet:

Delphi-Quellcode:
type
  TSpezial = class
    moeglich : boolean;
    hinweis: string;
    TextausMemo : TStrings;
  end;

  TDaten = class
    titel,Hinweis:string;
    TextAusMemo : TStrings;
    ready : boolean;
    spezielles: TSpezial;
  end;
An Dax:
Ich habs ausprobiert. Jetzt hakt das Programm allerdings an einer Anderen Stelle.

Muss ich evtl. auch TextAusMemo erst mit Create erstellen? Oder wird das automatisch mit erstellt, wenn man TDaten.Create aufruft?

Aber trotzdem danke..

mfg
changlee

changlee 4. Dez 2004 16:14

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
mmh..
funktioniert auch nicht wenn ich

Delphi-Quellcode:
TextAusMemo : = TStrings.Create;
einfüge.

Fehler beim schreiben von Adresse 0006 ..

:gruebel:
changlee

axelf98 4. Dez 2004 16:27

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Delphi-Quellcode:
TextAusMemo : = TStringlist.Create;
Niemals von TStrings erstellen... Das ist eine abstrakte Klasse!

Luckie 4. Dez 2004 16:27

Re: Problem beim Speichern eines einer Klasse in Textdatei
 
Les sakuras Antwort!


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