PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Delphi: Integer in Datei speichern: größe?


eXistence
2004-08-19, 15:42:06
hi, ich friemel mich gerade in Delphi ein und will einen Integer-Wert in einer Datei speichern.
Die Prozedur sieht so aus:

procedure TMKonv.IntToMartes(iAusgabe : integer; sM_file : string; iFilePos : Longint);
begin
AssignFile(fSIMartes, sM_file);
if FileExists (sM_file) then Reset(fSIMartes)
else Rewrite (fSIMartes);
seek(fSIMartes, iFilePos);

showmessage('Größe von $iAusgabe in Bytes: '+ IntToStr(SizeOf(iAusgabe)));

write (fSIMartes, iAusgabe);
closefile (fSIMartes);
end;

Das Problem ist, dass nicht das gespeichert wird, was soll. Ich lass mir vorher extra die Größe der Var iAusgabe anzeigen und sie belegt ordnungsgemäß 4 byte. Die erzeugte datei ist aber nur 2 byte groß :(

Wo liegt mein fehler?

PS: aufgerufen wird es z.B. so: (dürfte aber eher weniger wichtig sein...)

iTestVar := 2147483647;
IntToMartes(iTestVar, sMartesheader, 0);

sMartesheader ist der Dateiname... und die Null gibt die Position an, an der der Wert plaziert werden soll.

Crushinator
2004-08-19, 17:22:28
Ich könnte mir gut vorstellen, daß es an der Deklaration des Dateityps gelegen haben könnte. So klappt es bei mir jedenfalls mit 4 Bytes. :)

procedure TMKonv.IntToMartes(iAusgabe : integer; sM_file : string;
iFilePos : Longint);
Var
(* Eine typisierte Datei vom Typ Integer deklarieren. *)
fSIMartes: File of Integer;
begin

AssignFile(fSIMartes, sM_file);
if FileExists (sM_file) then Reset(fSIMartes)
else Rewrite (fSIMartes);
seek(fSIMartes, iFilePos);

showmessage('Größe von $iAusgabe in Bytes: ' + IntToStr(SizeOf(iAusgabe)));

write (fSIMartes, iAusgabe);
closefile (fSIMartes);

end;