Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
FreePascal / Lazarus
|
Re: bei string in TFileStream kommt 1 Zeichen zu wenig an...
22. Mär 2010, 22:33
Gut, Nun kommt schon mal alles richtig in der Datei an.
Aber beim auslesen bekomme ich nur Leerstrings zurück, warum?
Delphi-Quellcode:
procedure TForm1.Save(path: string);
var f:TFileStream;
x,y:integer;
begin
f:=TFileStream.Create(path,fmcreate);
f.WriteBuffer(High(AllTitel),SizeOf(integer));
for x:=0 to High(AllTitel) do
begin
y:=Length(AllTitel[x].Titel);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Titel[1],y);
y:=Length(AllTitel[x].Name);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Name[1],y);
y:=Length(AllTitel[x].Pfad);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Pfad[1],y);
y:=Length(AllTitel[x].Genre);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Genre[1],y);
y:=Length(AllTitel[x].Interpret);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Interpret[1],y);
y:=Length(AllTitel[x].Jahr);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Jahr[1],y);
y:=Length(AllTitel[x].Kommentar);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Kommentar[1],y);
y:=Length(AllTitel[x].Laenge);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Laenge[1],y);
y:=Length(AllTitel[x].Album);
f.WriteBuffer(y,SizeOf(integer));
f.WriteBuffer(AllTitel[x].Album[1],y);
end;
f.Free;
end;
procedure TForm1.Load(path: string);
var f:TFileStream;
x,y,z:integer;
s:string;
begin
f:=TFileStream.Create(path,fmOpenRead);
f.ReadBuffer(y,SizeOf(integer));
SetLength(AllTitel,y+1);
for x:=0 to y do
begin
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Titel[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Name[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Pfad[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Genre[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Interpret[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Jahr[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Kommentar[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Laenge[1],z);
f.ReadBuffer(z,sizeof(integer));
f.ReadBuffer(AllTitel[x].Album[1],z);
s:=AllTitel[x].Name;
LBSammelung.Items.Add(s);
end;
f.Free;
end;
Peter "Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
|