Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   [Gelöst] MemoryStream in FileStream EWriteError (https://www.delphipraxis.net/174779-%5Bgeloest%5D-memorystream-filestream-ewriteerror.html)

Ginko 9. Mai 2013 13:49


[Gelöst] MemoryStream in FileStream EWriteError
 
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.

Uwe Raabe 9. Mai 2013 14:03

AW: MemoryStream in FileStream EWriteError
 
Schon mal mit fmCreate versucht?

Keldorn 9. Mai 2013 14:04

AW: MemoryStream in FileStream EWriteError
 
Hallo

Delphi-Quellcode:
  Stream := TMemoryStream.Create;  ---> stream
   try
     Len := Length(Daten);
     MemStream.Write(Len, SizeOf(Len));   --->Memstream
Du erzeugt den Memstream doch gar nicht

Gruß Frank

Ginko 9. Mai 2013 14:07

AW: MemoryStream in FileStream EWriteError
 
Danke für die schnellen Antworten!

@Uwe Raabe, ja geht leider auch nicht, selber Fehler.

@Keldorn, habe ich gerade verbessert, das war nur ein Übernahmefehler, daran liegt es nicht.

Sir Rufo 9. Mai 2013 14:22

AW: MemoryStream in FileStream EWriteError
 
Delphi-Quellcode:
DatStream := TFileStream.Create( ... );
:mrgreen:

Ginko 9. Mai 2013 15:10

AW: MemoryStream in FileStream EWriteError
 
Oh ja das hab ich übersehen. Besten Dank !!!:thumb:
Jetzt läuft's !


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz