LabVIEWForum.de - Cluster Constanten

LabVIEWForum.de

Normale Version: Cluster Constanten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

ich habe einige Fragen zu Cluster Konstanten. Es ist ja relativ einfach
eine Constante im Blockdiagramm zu setzen. Allerdings benötige ich
Cluster, die ich erst im Programmablauf erstellt werden, z.B.

[attachment=21486]

Hierzu habe ich zum unteren Beispiel einige Fragen:

1. Kann man dem Cluster "#attributes" während des Programmablaufs
Elemente hinzufügen, d.h. den Inhalt beliebig ändern? z.B. ein dritten
Wert hinzufügen oder ein Element löschen?

2. Wie kann ich den Namen "#attributes" und "Request" während der
Ausführung ändern? Eigenschaftsknoten für Cluster Constanten habe
ich nicht gefunden.

Gruß
Stefan
Du kannst das Cluster glaube ich nciht so ohne weiteres "erweitern". Dazu musst du es Aufschlüsseln und zu ienem neuen Cluster verbinden. Dabei kannst du natürlich auch direkt einen neuen Namen vergeben.

[attachment=21488]

Du hast in deinem unteren Beispiel das Alte Cluster aus zwei Elementen gebündelt. Als ergebnis bekommst du Ein Cluster mit einem Cluster als inhalt. Das ist glaube ich nciht das, was du willst.

LG
Torsten
zu 1
Das geht definitiv nicht. Dazu mußt Du entweder ein Array nehmen oder es ist etwas Kreativität gefragt. Du erstellst im Cluser einfach die maximales Anzahl von Elementen und legst z.B. fest, wenn eine Null im Element steht, ist es nicht gültig. Oder Du fügst in den Cluster ein weiteres Element ein, in dem die Anzahl der gütigen Elemente vermerkt ist. (Also Wenn Du als Platzhater 6 Elemente im Cluster hast, und in dem zusätzlichen Element steht eine 3 drin, dann sind nur in den ersten drei Elementen gütige Werte enthalten)
zu 2.
Das geht nicht, allerdings ist das in keiner Hinsicht ein Nachteil. Enfach ein verborgenes Bedienelement statt einer Konstanten verwenden
' schrieb:Dabei kannst du natürlich auch direkt einen neuen Namen vergeben.

Hi Torsten,

so gehts zwar, aber nochmal der Hinweis, wie schon geschrieben: nicht im Blockdiagramm

Ich muss während der Laufzeit
-> Cluster erstellen
-> Inhalte ändern können ohne das die Namen (Beschriftung) der Inhalte verloren gehen
-> die Namen der Cluster beliebig setzen können

Fest verdrahtet ist das alles kein Problem, aber während der Laufzeit schon... bin noch
dabei das alles über Eigenschaftsknoten zu machen... komme aber nicht sehr weit

Stefan
' schrieb:-> Cluster erstellen
Du willst also einen neuen Typ erstellen. Vergleiche bei Lucki.
Einen neuen Typ während der Laufzeit zu erstellen ist in allen Programmiersprachen sehr aufwändig. Sowas würde über RTTI (RunTimeTypInfo) gehen. Solche Typen wären dann dynamisch und müssten von allen Elementen, die damit arbeiten sollen, genau so (nämlich dynamisch) verarbeitet werden. Der Typ Variant entspricht in etwa einem dynamischen Typ. Möglicherweise würde deine Aufgabe über Variant zu löschen sein.
Ein weiteres Problem besteht darin, dass es gerade in LV zu jedem Element auf dem BD ein korrespondierendes Element auf dem FP gibt. Du müsstest also auf auf dem FP zur Laufzeit neue Elemente generieren. Das ist gerade in LV noch schwieriger.

Zitat:-> Inhalte ändern können ohne das die Namen (Beschriftung) der Inhalte verloren gehen
Wo liegt jetzt hier ein Problem?
Hinweis:
Den Namen kann man nicht ändern. Nur die Beschriftung. "Name" ist der Name der Variablen im BD, Beschriftung erscheint im FP.

Zitat:-> die Namen der Cluster beliebig setzen können
"Namen setzen" würde heißen du gibt der Instanz eines Typs einen Namen. Geht natürlich erst dann, wenn der dynamische Typ geht. Warum willst den Namen ändern oder die Beschriftung? Wenn den Namen, warum denn den Namen?

[*grübel*]

Wenn ich so ganz kurz darüber nachdenke, könnte man, sollte es nichts besseres geben, zumindest den Typ aus Variants erzeugen.

[*grübel*]

Man kann auch ein 2DArrayOfString machen. Reihen: Anzahl der Elemente des Typs. Spalten: VariablenTyp, VariablenWert, VariablenName.
Wenn du etwas Zeit hast gäbe es da noch eine zweite Möglichkeit. Du benutzt ja zu Generierung des XML-String eine Funktion von JKL. Eingang ist hier ein Variant. Du könntest jetzt natürlich diesen Variant zur Laufzeit so basteln, das "Easy Generate XML" glaubt, einen Cluster vor sich zu haben, den dann die OpenG Funktionen artgerecht zerlegen. Anbei ein Beispiel

[attachment=21491]

Die andere Möglichkeit wäre natürlich, das ganze mit dem XML-Parser zu machen.
@dali4u

' schrieb:Du benutzt ja zu Generierung des XML-String eine Funktion von JKL.
Bevor ich hier in die falsche Richtung denke: Willst du lediglich Daten in einem XML ablegen oder soll ein Anwender Daten am FP sehen, bearbeiten etc. können, also eigenlich alles unabhängig von XML?
Referenz-URLs