VST Node.Dummy

Rund um die LCL und andere Komponenten
Antworten
hubblec4
Beiträge: 341
Registriert: Sa 25. Jan 2014, 17:50

VST Node.Dummy

Beitrag von hubblec4 »

Hallo

Ich schon wieder mit einer Frage zum VST.

Es gibt bei den Virtual Nodes einen Byte-wert "Dummy",

kann ich diesen Wert für mich selber nutzen, so als eine art "Tag".

Ich brauche für ein VST unterschiedliche Datensätze, kommt immer auf den Node an.
Allerdings kann ich jetzt auch nicht einfach sagen, Nodes mit Level 0 haben Datanklasse A und Level 1 bekommt Datenklasse B,
da die Nodes in allen eben liegen können.

hubble

wp_xyz
Beiträge: 4888
Registriert: Fr 8. Apr 2011, 09:01

Re: VST Node.Dummy

Beitrag von wp_xyz »

Dummy scheint anscheinend ein Füllwert zu sein, um die Nodedatenrecords an der 32-bit Grenze auszurichten. Aber verlassen würde ich mich nicht darauf, dem Entwickler der Komponente kann jederzeit etwas einfallen, dass Dummy nicht mehr zur Verfügung steht.

Du nennst deine Daten in der Beschreibung oben eh schon "Datenklasse A" und "Datenklasse B". Warum steckst du sie dann nicht als class(TObject) in den Nodedatenrecord? Mit Hilfe des Operators "is" kannst du dann jederzeit feststellen, ob der Node Daten der Klasse A oder B enthält. Wichtig ist nur, dass der Datenrecord immer gleich groß ist, und das ist bei TObject der Fall (Größe eines Pointers).

hubblec4
Beiträge: 341
Registriert: Sa 25. Jan 2014, 17:50

Re: VST Node.Dummy

Beitrag von hubblec4 »

Danke für die Antwort.
Mich hat auch diese Erklärung "Füllwert" gestört.

Das Datenrecord wird wohl sowieso verwendet werden müssen, da ja die Datenklassen unterschiedlich "groß" sind, und dann gibts Probleme mit der NodeDataSize.

Ich überlege auch die Datenklassen separat in einer TObjectlist zu speichern und dann nur noch mittels des AbsolutIndex des Nodes darauf zugreife.

wp_xyz
Beiträge: 4888
Registriert: Fr 8. Apr 2011, 09:01

Re: VST Node.Dummy

Beitrag von wp_xyz »

hubblec4 hat geschrieben:Das Datenrecord wird wohl sowieso verwendet werden müssen, da ja die Datenklassen unterschiedlich "groß" sind, und dann gibts Probleme mit der NodeDataSize.

Wieso denn? TObject hat die Größe eines Pointers. Wieviel du in das Objekt reinpackst, spielt hier keine Rolle, denn im Node steht der Pointer, nicht das, worauf der Pointer zeigt

Code: Alles auswählen

 
type
  TDataA = class
    Name: String;
    Geburtsdatum: TDate;
    Ort: String;
  end;
 
  TDataB = class
    Firma: String;
    Umsatz: Currency;
  end;
 
type
  TNodeData = record
    Data: TObject; // wird einmal als TDataA, einmal als TDataB erzeugt
  end;
 
  // ich meine, es müsste auch so gehen:
  //TNodeData = class;

hubblec4
Beiträge: 341
Registriert: Sa 25. Jan 2014, 17:50

Re: VST Node.Dummy

Beitrag von hubblec4 »

Ja so in der art müsste es dann aussehen. War mir nur nicht ganz sicher wegen der NodeDataSize, aber gut zu wissen das der Pointer als "Größe" genommen wird.

// ich meine, es müsste auch so gehen:
//TNodeData = class;


Das habe ich auch so umgesetzt, für einfachere VST's. Hatte mich dazu bissl belesen und fand das man als NodeData auch gleich eine Klasse verwenden kann, also kein Record mehr. Funktioniert auch wunderbar.

Da nun aber Daten, über mehere VST's verteilt angezeigt/bereitgestellt(änderbar) werden müssen(Auswahl des Nodes im Haupt-VST), denke ich könnte es besser sein eine unabhängige Datenklasse zu haben die nicht an ein VST (Node-Struktur) gebunden ist.

Antworten