Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#4

Re: bei string in TFileStream kommt 1 Zeichen zu wenig an...

  Alt 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!".
  Mit Zitat antworten Zitat