![]() |
Delphi-Version: XE5
Stream in Stream kopieren
Steh grad etwas aufm Schlauch:
Wenn ich mit:
Delphi-Quellcode:
Daten aus einem anderem Stream in den neuen reinkopiere müsste ich diese doch mit :
procedure tTestStream.WriteStream(aStream: TStream);
Var hSize : Int64; begin aStream.Position :=0; hSize := aStream.Size; Write(hSize, Sizeof(hSize)); CopyFrom(aStream,hSize); end;
Delphi-Quellcode:
auslesen können?
function tTestStream.ReadStream: TStream;
var hSize : Integer; begin Read(hSize,Sizeof(hSize)); Result.CopyFrom(Self,hSize); end; oder hab ich hier einen Denkfehler? edit: tTestStream erbt von TMemoryStream |
AW: Stream in Stream kopieren
Ist der Result Stream auch initialisiert/gibt es da eine gültige Instanz?
|
AW: Stream in Stream kopieren
Ja erläutere mal, was so schief geht!?!
Edit außerdem: Zitat:
|
AW: Stream in Stream kopieren
Ok man merkt ich sollte aufhören für heute....
Überarbeitet:
Delphi-Quellcode:
Edit : wobei... dann kopiert mir ja die Read Funktion den ganzen stream und nicht nur den Stream ab der position?procedure tTestStream.WriteStream(aStream: TStream); Var hSize : Int64; begin hSize := aStream.Size; Write(hSize, Sizeof(hSize)); CopyFrom(aStream,hSize); end; function tTestStream.ReadStream: TStream; var hSize : Integer; begin Result := TStream.Create; Read(hSize,Sizeof(hSize)); Result.CopyFrom(Self,hSize); end; glaube da muss ich morgen noch mal aus anderes suchen... |
AW: Stream in Stream kopieren
So etwas frischer heute...
und Problem gelöst... man sollte nicht Tstream also constructor nutzen sondern zB. TMemoryStream... und schon geht es^^
Delphi-Quellcode:
Danke noch mal für die hilfe
function tTestStream.ReadStream: TStream;
var hSize : Integer; begin Result := TMemoryStream.Create; Read(hSize,Sizeof(hSize)); Result.CopyFrom(Self,hSize); end; |
AW: Stream in Stream kopieren
oder auch nicht jetzt bekomme ich wenn ich den internen memoryStream mit Copyfrom in einen FileStream copieren will die Fehlermeldung : "Stream-Lesefehler"
Delphi-Quellcode:
Weis einer woran das liegen könnte?
procedure TForm1.DateiSave(aStream: TMemoryStream);
var hStream : TStream; begin hStream := TFileStream.Create('Test2.txt',fmCreate); try hStream.CopyFrom(aStream,aStream.Size);{hier kommt der Fehler} finally hStream.Free; end; end; |
AW: Stream in Stream kopieren
Zitat:
Ist das "OK"? Wie groß ist aStream? (Size) Wo der steht der Zeiger im aStream? (Position) |
AW: Stream in Stream kopieren
Noch mal danke....
die zeiger position wars..... für die die es interessiert :
Delphi-Quellcode:
function tTestStream.ReadStream: TMemoryStream;
var hSize : Int64; begin Result := TMemoryStream.Create; Read(hSize,Sizeof(hSize)); Result.CopyFrom(Self,hSize); end; ... aStream := hStream.ReadStream; ... procedure TForm1.DateiSave(aStream: TMemoryStream); var hStream : TStream; begin hStream := TFileStream.Create('Test2.exe',fmCreate); try aStream.Position := 0; hStream.CopyFrom(aStream,aStream.Size); finally hStream.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz