AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VST Speichern und Laden

Ein Thema von 100nF · begonnen am 24. Feb 2008 · letzter Beitrag vom 29. Feb 2008
Antwort Antwort
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#1

Re: VST Speichern und Laden

  Alt 28. Feb 2008, 18:00
ich denke das Problem tritt beim Laden auf.
Natürlich müssen die Objekte erzeugt werden.

Der interne Record vom VST speichert NUR den Zeiger auf das Objekt.

bzw. das Load erzeugt das object, allerdings nur wenn du die klasse vorher registierst.

Delphi-Quellcode:
type
  TTreehelper = class(TComponent)
  private
    fabc: string;
  published
    property abc: string read fabc write fabc;
  end;
  pTreehelper = ^TTreehelper;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  VirtualStringTree1.LoadFromFile('c:\temp\tree.dat');
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  VirtualStringTree1.SaveToFile('c:\temp\tree.dat');
end;

procedure TForm2.Button3Click(Sender: TObject);
var
  a: TTreehelper;
begin
  a:=TTreehelper.Create(nil);
  a.abc:='hallo';
  VirtualStringTree1.AddChild(nil, a);
  a:=TTreehelper.Create(nil);
  a.abc:='ballo';
  VirtualStringTree1.AddChild(nil, a);
  a:=TTreehelper.Create(nil);
  a.abc:='callo';
  VirtualStringTree1.AddChild(nil, a);
  a:=TTreehelper.Create(nil);
  a.abc:='dllo';
  VirtualStringTree1.AddChild(nil, a);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  VirtualStringTree1.NodeDataSize:=sizeof(TTreehelper);
  RegisterClass(TTreehelper);
end;

procedure TForm2.VirtualStringTree1FreeNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
var
  a: TTreehelper;
begin
  a:=TTreehelper(Sender.GetNodeData(node)^);
  a.free;
end;

procedure TForm2.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  a: TTreehelper;
begin
  a:=TTreehelper(Sender.GetNodeData(node)^);
  CellText:=a.abc;
end;

procedure TForm2.VirtualStringTree1LoadNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  a: TTreehelper;
  p: pTreehelper;
begin
  a:=Stream.ReadComponent(nil) as TTreehelper;
  p:=sender.GetNodeData(node);
  p^:=a;
end;

procedure TForm2.VirtualStringTree1SaveNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  a: TTreehelper;
begin
  a:=TTreehelper(Sender.GetNodeData(node)^);
  Stream.WriteComponent(a);
end;
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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 by Thomas Breitkreuz