jupp, dann kracht es.
aber ich glaub ich bin zu blind ... wo fehlt fa ein fs. ? nja, vieleicht wurde es auch schon korrigiert
Delphi-Quellcode:
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));
if l > 0 then fs.Write(x.Album[1], l);
l := Length(x.Titel);
fs.Write(l, SizeOf(Integer));
if l > 0 then fs.Write(x.Titel[1], l);
l := Length(x.Songs);
fs.Write(l, SizeOf(Integer));
if l > 0 then fs.Write(x.Songs[1], l);
finally
fs.Free;
end;
end;
lesen dann so:
Delphi-Quellcode:
fs.Read(l, SizeOf(Integer));
SetLength(x.Album, l);
if l > 0 then fs.Read(x.Album[1], l);
man könnte zwar auch mit Pointern rumjonglieren, aber empfehlen würde ich den Meisten dann doch die variante mit dem IF.
Delphi-Quellcode:
l := Length(x.Album);
fs.Write(l, SizeOf(Integer));
fs.Write(PChar(x.Album)^, l);
wer ist eigentlich auf die blöde Idee gekommen die Read/Write-Funktionen nur per Var-Parameter zu basteln