Hallo, ich versuche gerade einen MomoryStream in einen Filestream zu schreiben, was ja eigentlich nicht so schwer sein dürfte, also entweder ist hier in FreePascal was anders oder der Fehler liegt woanders.
Delphi-Quellcode:
type
TDatensatz = record
ID: integer;
Name: AnsiString;
end;
TDatenArray = array of TDatensatz;
procedure TForm1.Button1Click(Sender: TObject);
var
Daten: TDatenArray;
MemStream: TMemoryStream;
DatStream: TFilestream;
I: integer;
Len: LongInt;
begin
SetLength(Daten, 1);
Daten[0].ID := 1;
Daten[0].Name := 'Ein Name';
MemStream:= TMemoryStream.Create;
try
Len := Length(Daten);
MemStream.Write(Len, SizeOf(Len));
for I := 0 to Length(Daten) - 1 do
begin
MemStream.Write(Daten[I].ID, SizeOf(Daten[I].ID));
Len := Length(Daten[I].Name);
MemStream.Write(Len, SizeOf(Len));
MemStream.Write(PChar(Daten[I].Name)^, Len);
end;
DatStream.Create('Neu.dat',fmOpenReadWrite);
try
MemStream.Position:= 0;
DatStream.CopyFrom(MemStream, MemStream.Size); //Fehler EWriteError
//MemStream.SaveToStream(DatStream); //Fehler EWriteError
finally
DatStream.Free;
end;
finally
MemStream.Free;
end;
end;
MemStream.SaveToFile('Neu.dat'); würde zwar gehen, bringt mir aber nichts, weil ich eigentlich mehrere Streams in eine Datei speichern will.