Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: [VirtualTreeView] Daten später laden

  Alt 24. Aug 2006, 08:41
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
  Mit Zitat antworten Zitat