Einzelnen Beitrag anzeigen

Benutzerbild von Mikescher
Mikescher

Registriert seit: 3. Jun 2008
Ort: Offenburg
265 Beiträge
 
Delphi 2009 Professional
 
#1

[VST] Bei SaveNode mit TBitmap eine AV

  Alt 29. Jul 2010, 11:44
Hallo,

bei der VST-Komponente (jetzt Version 4.8.5) ist es ja möglich über das Event OnSaveNode / OnLoadNode die einem Node mitgegebenen Daten mitzuspeichern wenn man den VST speichert.

für einen Integer in meinem Datenrecord schreibe ich dann so etwas:

Delphi-Quellcode:
procedure TForm1.VSTLoadNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
begin
  Data := VST.GetNodeData(Node);

  Stream.read(Data.Parts, SizeOf(Data.Parts));
end;

procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
begin
  Data := VST.GetNodeData(Node);

  Stream.write(Data.Parts, SizeOf(Data.Parts));
end;
Das funktioniert auch.

jetzt habe ich das Problem das in meinem Datenrecord sich auch ein TBitmap befindet, dieses speichere/lade ich jetzt so:
Delphi-Quellcode:
procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
  Len: integer;
begin
  Data := VST.GetNodeData(Node);

  Len := SizeOf(Data.Image);
  Stream.write(Len, Sizeof(Len));
  Stream.write(Data.Cover, SizeOf(Data.Image));
end;

procedure TForm1.VSTLoadNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
  Len: integer;
begin
  Data := VST_Movies.GetNodeData(Node);

  Data.Cover := TBitmap.Create;
  Len := Stream.Read(Len, SizeOf(Len));
  Stream.read(Data.Image, Len);
end;
Jedoch sobald ich dann auf das Bitmap zugreifen wie ( wie hier: ) gibt es eine AV
Delphi-Quellcode:
procedure TForm1.VSTClick(Sender: TObject);
var
  Node: PVirtualNode;
  Data: PTreeData;
begin
  Node:=VST.FocusedNode;
  if not Assigned(Node) then
    Exit;
  Data := vst.GetNodeData(Node);
  Image1.Picture.Bitmap := Data^.Image;
end;
Schonmnal im vorraus Danke für jede Hilfe
... Mike
Mike
Operation gelungen, Patient tot.

http://www.mikescher.com
  Mit Zitat antworten Zitat