Autor Beitrag
Uncle
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 23.10.03 10:37 
Hallo alle zusammen, ich bräuchte da wirklich mal ein wenig Hilfe. Ich habe mein Problem auf diese wenigen Zeilen reduziert und kann den Fehler nicht entdecken.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
Interface
..
type
  TDepp = class
    Name: string;
  end;
..
implementation
..
procedure save;
var
  d: TDepp;
  f: file of TDepp;
begin
  d:= TDepp.create;
  d.name:='f*** OFF!!!';
  assignfile(f,'c:\Test\Depp.dat');
  rewrite(f);
  write(f,d);
  closefile(f);
  d.free;
end;

procedure Load;
var
  d: TDepp;
  f: file of TDepp;
begin
  d:= TDepp.create; // offensichtlich optional ?!?
  assignfile(f,'c:\Test\Depp.dat');
  Reset(f);
  Read(f,d);
  showmessage(d.name); // -> Zugriffsverletzung, oder Ausgabe von ''
  CloseFile(f);
  d.free; // offensichtlich optional ?!?
end;


Das Interessante ist auch, dass er auch kompiliert, wenn ich in der Load-Prozedur gar keine d-Instanz instanziert habe! Die Ausgabe verändert sich ebenfalls nicht.
Ich habe es auch mit einem beschränktem String, char und integer unter TDepp probiert, aber die Ausgabe blieb dieselbe.

Ich bitte um möglichst schnelle Hilfe.
Vielen Dank im Vorraus!

Uncle

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 23.10.03 10:46 
Hallo,
ich Tippe mal drauf, dass das Problem ist, das du eine Klasse speichern willst. Der Typer dieser Lautet Pointer und somit speicherst du nur diesen. Da selbe gild übrigens auch für Strings Varialbler länge. Da dann Delphi die Blockgröße nicht bestimmen, und ihn somit nicht Typisiert speichern.

Ändere also dein
ausblenden Delphi-Quelltext
1:
2:
3:
 TDepp = class 
    Name: string
  end;


in

ausblenden Delphi-Quelltext
1:
2:
3:
tDepp = packed record
  Name : string[75];
end;


Ein Demo für das Arbeiten mit Typisierten Dateien kannst du übrigens hier runterladen.

Gruß
Klabautermann
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.10.03 17:31 
Und hier gibt es eien eigene Klasse dafür mit Demo Anwendung: www.luckie-online.de/downloads/ -> TypedfilesClass.