![]() |
AW: "Stream Lesefehler" bei Laden via TFileStream
Vielen Dank nochmal an alle und @Bummi
Das mache ich doch schon sowohl beim Schreiben als auch beim Lesen. :) Das war nicht das Problem. Habe den Fehler nun gefunden (habe einmal strlngth und lngth vertauscht). Mit dem Code hier geht es jetzt:
Delphi-Quellcode:
procedure TListHandler.Load(const FilePath: String);
var F_Stream: TFileStream; lngth: Integer; strlngth: Integer; I: Integer; name, Info: String; begin try F_Stream := TFileStream.Create(FilePath, fmOpenRead); F_Stream.ReadBuffer(lngth, SizeOf(lngth)); List.Length := lngth; for I := 0 to List.Length - 1 do begin F_Stream.ReadBuffer(strlngth, SizeOf(strlngth)); SetLength(Name, strlngth); F_Stream.ReadBuffer(Name[1], strlngth*SizeOf(Name[1])); Item.Name := Name; F_Stream.ReadBuffer(strlngth, SizeOf(lngth)); SetLength(Info, strlngth); F_Stream.ReadBuffer(Info[1], strlngth*SizeOf(Info[1])); Item.Info := Info; F_Stream.ReadBuffer(lngth, SizeOf(lngth)); Item.ID := lngth; List.Item[i] := Item; end;// for finally F_Stream.Free; end; // finally end; // Load // ############################################################################# // Save the whole List as it is to a pre-specified Filepath procedure TListHandler.Save(const FilePath: String); var F_Stream: TFileStream; lngth: Integer; strLngth: Integer; I: Integer; begin try F_Stream := TFileStream.Create(FilePath, fmCreate); lngth := List.Length; F_Stream.WriteBuffer(lngth, SizeOf(lngth)); for I := 0 to List.Length - 1 do begin strlngth := Length(List.Item[I].Name); F_Stream.WriteBuffer(strlngth, SizeOf(strlngth)); F_Stream.WriteBuffer(List.Item[I].Name[1], strlngth*SizeOf(List.Item[I].Name[1])); strlngth := Length(List.Item[i].Info); F_Stream.WriteBuffer(strlngth, SizeOf(strlngth)); F_Stream.WriteBuffer(List.Item[I].Info[1], strlngth*SizeOf(List.Item[I].Info[1])); lngth := List.Item[i].ID; F_Stream.WriteBuffer(lngth, SizeOf(lngth)); end; // for finally F_Stream.Free; end; end; // Save Vielen Dank nochmals an alle :) Ihr habt mir sehr geholfen :thumb: Hier kann nun also geschlossen werden ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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 by Thomas Breitkreuz