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
Hier kann nun also geschlossen werden ^^