Autor Beitrag
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Di 06.09.05 21:03 
Hallo

normale weiser kann ich ein Record ja über
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
f:file of Trecord;

assignfile(f,'bla.bla');
write(f,trecord);


nun habe ich aber ein problem
ein Record
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
TMap = Record
  map:array of array of integer;
  width:integer;
  height:integer;
end;


enthält eine Dynamisches 2D-Array
wenn ich nun dieses Record in eine Datei setzen will so kommt:
Zitat:
[Fehler] map_edit.pas(155): Typ 'TMap' benötigt Finalization - nicht im Dateityp erlaubt

Zur Laufzeit wird die Größe des Arrays angepasst, aber das merkt der Compiler leider nicht
Wie kann ich das ändern?

Moderiert von user profile iconGausi: Delphi-Tags repariert.
Moderiert von user profile iconChristian S.: Topic aus Multimedia / Spiele / Grafik verschoben am Di 06.09.2005 um 21:28
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 06.09.05 21:34 
Hallo!

Um ein Record mittels "File of ..." speichern zu können, muss seine Größe zur Zeit der Kompilation bekannt sein. Da Dein Record dynamische Arrays enthält, ist dies hier nicht der Fall. Falls es in Deinem Fall geht, kannst Du aus dem dynamischem ein statisches Array machen, dessen Größe Du also von vorne herein angibst.

Alternativ müsstest Du Deine Daten über einen Suche in: Delphi-Forum, Delphi-Library TFILESTREAM speichern, den Du anstatt des "File of ..." benutzt.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
jahwe2000
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 23


D6 Pers, BDS 9, C# (#Develop 2.0)
BeitragVerfasst: Di 06.09.05 21:42 
user profile iconDarkHunter hat folgendes geschrieben:

Zur *Laufzeit* wird die Größe des Arrays angepasst, aber das merkt der *Compiler* leider nicht


Merkst du was schief läuft? ;-)
Der compiler hat natürlich keine Ahnung, was zur Laufzeit los ist.
Man kann leider keine dynamischen Variablen in files abspeichern, da sich die files auf ne feste größe verlassen wollen...

grüße,
Philip
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 06.09.05 21:56 
user profile iconjahwe2000 hat folgendes geschrieben:
Man kann leider keine dynamischen Variablen in files abspeichern, da sich die files auf ne feste größe verlassen wollen...
Äh, mit Files meinst Du jetzt "File of ...", oder? Denn generell kann man natürlich jede Art von Daten in Dateien speichern ;-) Wie das geht, siehe oben.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
DarkHunter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Di 06.09.05 21:57 
Ich danke euch beiden
ich werde mir wohl mal die FileStreams anschauen müssen.