Zitat von
m.wollert:
ich würde mal TMemoryStream versuchen.
Hi,
daran musst du dich halten! TStream.Create kann nicht funktionieren, da TStream abstrakt ist (du würdest später einfach einen abstrakten Fehler bekommen!).
Was dein Problem angeht, so solltest du ein paar Dinge sicherstellen. So prüft man immer, ob eine Instanz existiert bevor man sie verwendet und bei Streams müssen die Positionen gesetzt sein. Häufigster Fehler, es wird in den Stream geschrieben und gleich danach gelesen (die Position ist dann dummerweise im Stream, häufig sogar an seinem Ende).
Versuch es mal so:
Delphi-Quellcode:
var
aStream: TStream; // Hier ist TStream völlig ok!
procedure TMainForm1.VSTLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
begin
...
// prüfen ob Stream überhaupt existiert!
if assigned(Stream) then
begin
aStream := TMemoryStream.Create; // nur beim erzeugen nie TStream.Create verwenden!
// setzen der Position
Stream.Position := 0;
aStream.CopyFrom(Stream, Stream.Size);
// Alternativ kannst du auch
// aStream.CopyFrom(Stream, 0)
// verwenden, hier wird automatisch auf 0 gesetzt und dann alles kopiert!
end;
end;
Gruß Der Unwissende