Hallo
Ich habe 2 Objeke, ein Item und eine ItemList.
Das Item ist wie folgt aufgebaut
Delphi-Quellcode:
TItem = record
ID: Integer; // wird automatisch gesetzt
Name: String;
Info: String;
end; // TItem
Und die ItemList ist eine ganze Klasse, die ein array of TItem hat und dieses dann mit entsprechenden Methoden verwaltet.
Weiterhin habe ich eine Klasse TListHandler, da ich die ItemList in mehreren Forms brauche. Der Listhandler hat auch die Save und Load Methoden. Bei denen mache ich dann offensichtlich etwas falsch:
(lngth ist die Länge des Dynmaischen arrays, die ich in einer seperaten Datei (ListenName.list~) speichere
)
Delphi-Quellcode:
// Load a existing List from a specific Filepath
function TListHandler.Load(const FilePath, Pathlngth: string): TItemList;
var F_Stream: TFileStream;
F_tmp: TFileStream;
i: Integer;
lngth: Integer;
Name, Info: String;
begin
try
F_Stream := TFileStream.Create(FilePath, fmOpenRead);
F_tmp := TFileStream.Create(Pathlngth, fmOpenRead);
F_tmp.ReadBuffer(lngth, SizeOf(lngth));
for i := 0 to lngth-1 do
begin
Name := List.Item[i].Name;
Info := List.Item[i].Info;
F_Stream.ReadBuffer(Name[1], SizeOf(Name));
F_Stream.ReadBuffer(Info[1], SizeOf(Info));
List.Length := lngth;
end;
finally
F_Stream.Free;
F_tmp.Free;
end; // if
end; // Load
//##############################################################################
// Save the whole List as it is to a pre-specified Filepath
procedure TListHandler.Save(const FilePath, Pathlngth: String);
var FileStream: TFileStream;
F_tmp: TFileStream;
i: Integer;
lngth: Integer;
Name, Info: String;
begin
try
FileStream := TFileStream.Create(FilePath, fmCreate);
F_tmp := TFileStream.Create(Pathlngth, fmCreate);
lngth := List.Length;
F_tmp.WriteBuffer(lngth, SizeOf(lngth));
for i := 0 to List.Length-1 do
begin
Name := List.Item[i].Name;
Info := List.Item[i].Info;
FileStream.WriteBuffer(Name[1], SizeOf(Name));
FileStream.WriteBuffer(Info[1], SizeOF(Info));
end;
finally
FileStream.Free;
F_tmp.Free;
end; // finally
end; // Save
Anbei (falls notwendig) noch die beiden Klassen TItemList und TListHandler
PS: Beide Klassen sind noch nicht fertig und entsprechende Methoden werden im letzten Zug ausgelagert.