![]() |
TFileStream.Write / .Read
Ich habe das Problem, dass ich per TFileStream eine Integervariable hineinschreibe, sie jedoch falsch ausglesen wird.
Write:
Delphi-Quellcode:
Read:
try
F := TFileStream.Create(FName,fmCreate); //ja, FName ist gesetzt finally Size := Length(Connection); WriteLn(Size); //LIEFERT 1 ZURÜCK F.Write(Size,SizeOf(Size)); F.Free; end;
Delphi-Quellcode:
Was mache ich falsch?
try
F := TFileStream.Create(FName,fmOpenRead); //ja, FName ist gesetzt finally Size := F.Read(Size,SizeOf(Size)); WriteLn(IntToStr(Size)); //GIBT 4 AUS F.Free; end; edit: ui, hundertste Beitrag - er, Frage ^^ |
Re: TFileStream.Write / .Read
So geht es:
Delphi-Quellcode:
Die Methode TStream.Read gibt als Rückgabewert die Zahl der ausgelesenen Bytes ;)
try
F := TFileStream.Create(FName,fmOpenRead); //ja, FName ist gesetzt finally F.Read(Size,SizeOf(Size)); WriteLn(IntToStr(Size)); //GIBT 4 AUS F.Free; end; |
Re: TFileStream.Write / .Read
Danke (:.
|
Re: TFileStream.Write / .Read
Was sind das für seltsame Ressourcenschutzblöcke? :gruebel:
Delphi-Quellcode:
so wie ihr die da habt bringen sie absolut nichts.
procedure TForm1.Button1Click(Sender: TObject);
var fs: TFileStream; i: Integer; begin fs := TFileStream.Create('d:\test.txt', fmCreate); try i := 36; fs.WriteBuffer(i, sizeof(Integer)); finally FreeAndNil(fs); end; end; procedure TForm1.Button2Click(Sender: TObject); var fs: TFileStream; i: Integer; begin fs := TFileStream.Create('d:\test.txt', fmOpenRead); try fs.ReadBuffer(i, sizeof(Integer)); ShowMessage(IntToStr(i)); finally FreeAndNil(fs); end; end; |
Re: TFileStream.Write / .Read
Naja, SizeOf(Size) und SizeOf(Integer) sind ja, da Size eine Integervariable ist, deckungsggliech?
|
Re: TFileStream.Write / .Read
Jupp. Hat aber nichts damit zu tun, dass dein Ressourcenschutzblock für den Popo ist und somit eigentlich keiner ist. Was wenn es beim Schreiben kracht? Dann fliegst du aus dem finally Abschnitt raus und wie geht es dann weiter?
Der finally Abschnittt ist dazu da, dass Code noch abgearbeitet wird, wenn im vorangegangenem try Abschnitt eine Exception aufgetreten ist. |
Re: TFileStream.Write / .Read
Zitat:
|
Re: TFileStream.Write / .Read
Achso, okay. Danke (:.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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