Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
Delphi 10.2 Tokyo Professional
|
Re: Variable Records speichern
15. Jan 2009, 15:48
Das wird so nicht funktionieren. Es werden nur die Pointer auf die Stringdaten in der Datei gespeichert, wovon man nichts hat.
Ich würds mit nem FileStream machen:
Delphi-Quellcode:
type
TCDArchiv = record
Album, Titel, Songs:String;
interface
procedure Save(x: TCDArchiv; Filename: String);
var fs: TFileStream;
l: Integer;
begin
fs := TFilestream.Create(Filename,fmCreate);
try
l := Length(x.Album);
fs.Write(l,SizeOf(Integer));
fs.Write(x.Album[1],l);
l := Length(x.Titel);
fs.Write(l,SizeOf(Integer));
fs.Write(x.Titel[1],l);
l := Length(x.Songs);
fs.Write(l,SizeOf(Integer));
fs.Write(x.Songs[1],l);
finally
fs.Free;
end;
end;
function Load(Filename: String): TCDArchiv;
var fs: TFileStream;
l: Integer;
begin
fs := TFilestream.Create(Filename,fmOpenRead);
try
fs.Read(l,SizeOf(Integer);
SetLength(Result.Album,l);
fs.Read(Result.Album[1],l);
fs.Read(l,SizeOf(Integer);
SetLength(Result.Titel,l);
fs.Read(Result.Titel[1],l);
fs.Read(l,SizeOf(Integer);
SetLength(Result.Songs,l);
fs.Read(Result.Songs[1],l);
finally
fs.Free;
end;
end;
Sollte so funktionieren
Edit: Code korrigiert
Michael "Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
|
|
Zitat
|