(23.08.2018 13:09 )catbull schrieb: Erstellt wird das besagte Cluster in einer extra SubVI außerhalb der Schleife (Init), in der auch die Startwerte zugewiesen werden.
"Erstellen" ist doppeldeutig. Daher folgendes:
Das Erstellen des Clusters geschieht zur Entwicklungszeit, nicht zur Laufzeit. Wo dieser Cluster erstellt wird, in der FGV oder in einem Extra-VI, ist egal. Nach der Erstellung liegt der Cluster als Typdefinition (.cls-Element) auf Platte vor. Den Erstellungsort gibt es zur Laufzeit nicht mehr.
Zur Laufzeit wird eine Instanz von der Typdefinition erstellt und auch mit Werten vorbesetzt (die Vorbesetzung kann implizit oder explizit erfolgen). Diese Erstellung würde ich auf jeden Fall in der FGV machen. Nämlich im Case Create ...
Zitat:Was mich daran nur bisher irritiert hat: Eine Funktion kennt ja die Parameter einer anderen Funktion nicht.
Das ist auf jeden Fall richtig
Zitat:Und dieses Cluster ist ja quasi ein Parameter-Cluster.
"Parameter-Cluster" würde ich nicht sagen. "Parameter" alleine ist ausreichend. Der Cluster als solcher ist der Parameter (wie eben auch ein struct in anderen Sprachen).
Zitat:Liege ich aber richtig damit, dass ihr dieses Cluster eher als Attribute-Cluster als als Parameter-Cluster bezeichnen würdet?
Das führt jetzt aber zu weit: Ein Parameter ist eher ein "Übergabe-Parameter", also das, was im Funktionskopf steht, bzw. das, was der Eingang des VIs ist. (Beachte: es heißt: was der Eingang ist, nicht was am Eingang hängt: Am Eingang hängen tut der Parameterwert). Ein Attribut ist eine Eigenschaft, also eher eine logische Beschreibung des Objektes.
Weiterhin muss unterschieden werden zwischen Parameter/Attribut und Parameter/Attribut-Wert: Der Parameter ist eher der Draht als solcher, der Parameterwert ist der Inhalt, der sich durch den Draht bewegt.
Zitat:Um näher an eine OOP-Lösung zu gelangen sollte ich anstelle dieser 4 Boolean-Parameter für die Tastatureingabe (Leertaste, Links, Hoch, Rechts) ein(1) Enum-Element verwenden.
OOP zu machen und Enum zu verwenden sind aber zweierlei Dinge. Da bedingt sich nichts gegenseitig. Du kann ein Enumerator auch ohne jedwede OOP verwenden (und umgekehrt). Enumeratoren sind grundsätzlich sehr gut: Die sind nämlich typspezifisch und selbst-sprechend.