Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hi, ich habe leider mal wieder ein kleines Problem und hoffe mal, das mir hier jemand helfen kann!
Und zwar folgendes:
Ich habe mein unten angehängtes VI. Mit diesem möchte ich gerne Ein-Ausgänge von Modulen bearbeiten. Nun kann ich ein Projekt als eine *.TXT Datei speichern und wieder einlesen. Nun möchte ich aber auch noch die Namen der Ein - Ausgänge beim laden in das Array of Cluster schreiben.
Leider habe ich noch keinen Weg gefunden, wie ich das realisieren kann!
Bin für jede Hilfe und Tip dankbar!
Herbert
Anzeige
06.12.2006, 10:14 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2006 10:15 von A.Berndsen.)
ich hab mir Dein Programm jetzt nicht im Detail angesehen.
Deine Frage hab ich so verstanden, daß Du in dem Array of Clusters einen bestimmten String ändern möchtest.
Ich hab Dir dazu ein kleines Beispiel erstellt, wie es in einem eindimensionalen Array funktioniert.
Für ein dreidimensionales Array, wie in Deinem Fall, kommen eben noch zwei Angaben dazu, um das gewünschte Element im Array zu wählen.
Ich hoffe ich hab Deine Frage richtig verstanden.
Ich habe aber in dem Array of cluster kein Indicator, sondern ein Control! Also ich versuche es nochmal besser zu erklären (hab mich wahrscheinlich nicht gut ausgedrückt )
Also, ich nutze das Array of Cluster mit meinem String Control und der boolschen LED, um bestimmten Ein-Ausgängen Namen zur Übersicht zu geben. Nun möchte ich gerne, wenn ich alle Namen vergeben habe, diese in einer *.txt datei speichern. Dieses funktioniert auch schon. Jetzt möchte ich dieses Projekt wieder laden. Nun kann ich die Namen in das Listenfeld bereits laden.
Allerdings stehen die Namen nun noch nicht in dem Cluster links neben den Listboxen! Und genau das ist mein Problem! Ich habe also ein String Control und möchte nun so zu sagen diesen mit meinem zugehörigen Namen beschreiben!
ja, das sieht schon ganz gut aus! Aber kannst du mir wohl mal ein Beispiel posten, in dem die Namen des Array of cluster mit insgesamt 24 Elementen beschrieben wird?? Bei mir beschreibt der nämlich dann alle Elemente mit dem gleichen Namen! Die Namen sind allerdings nicht immer die gleichen !
In diesem Beispiel wurde ein String-Array mit 3 Elemente benutzt. Du brauchst ein String-Array mit 24 Elemente. Dieses Array musst Du dir aus deine TXT-Datei zusammenbasteln.
Gruß
VDB
Anzeige
06.12.2006, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2006 11:58 von Herbert.)
Sondern ein Array of Cluster, das aus einem String und einer LED besteht! Und dann hab ich das auf die Grösse 24 gezogen!! Und ich muss ja jetzt genau auf z.B. den ersten String was schreiben, und der zweite ist dann leer und dann wieder auf den dritten was schreiben!! Und so weiter..
Also hiflt mir deine Idee dann doch nicht weiter?????
Ich habe mal nen Screenshot gemacht, um alles besser zu erklären.
So, wenn ich nun das VI laufen lasse, kann ich über die TAB Leiste mein jeweiliges Modul anwählen. Unter dem TAB erscheinen dann meine Ein und Ausgänge. Diesen möchte ich zur Übersicht Namen zuweisen. Wenn ich nun in der Combobox (rechts neben dem TAB) z.B. Modul 1 auswähle, werden mir alle Namen der Ein - Ausgänge von Modul 1 angezeigt und ich kann diese dann auswählen.
Wenn ich alle ausgewählt habe, kann ich sie mir über den Speicher button speichern! Sie werden in einer *.TXT Datei gespeichert.
Nun möchte ich diese Datei wieder laden. Bisher konnte ich nur realisieren, dass die Namen in der Multicolumn Listbox stehen. Ich möchte sie aber auch noch in das Array of Cluster links neben den Multicolumn Listbox übergeben! Und genau das ist mein Problem!
' schrieb:Ich möchte sie aber auch noch in das Array of Cluster links neben den Multicolumn Listbox übergeben!
Ja. Das verstehe ich.
Zitat:Und genau das ist mein Problem!
Das wird es auch bleiben - ein Problem.
Und zwar aus folgendem Grund:
Gesetzt der Fall, du hast in Modul Eins allen 24 Eingängen Pseudonamen zugewiesen. Weiterhin gelte: In einem (egal welchem) Listenfeld hast du aber immer nur Modul Eins Eingang 12 - Pseudoname MyE - verwendet (und wenn 12 Stück). Wenn du jetzt nur die Listenfelder speicherst (und nicht die Eingänge), dann speicherst du ja auch nur "Modul Eins - MyE" - nicht aber noch die anderen 23 Pseudonamen ab. Wenn du diese (Listenfeld!)-Datei jetzt lädst, kannst du auch nur den Pseudonamen MyE irgendwo an ein Modul vergeben - die anderen 23 weißt du nämlich nicht mehr. Ein weiteres Problem: Pseudoname MyE - welchem physikalischen Eingang ist der denn zuzuweisen? E-was?
Ich würde das ja so machen:
Abgespeichert werden die Pseudonamen in den Modul-Listen bzw. die gesamten Modullisten. (Im übrigen würde ich da INI-Files nahmen). Bei den Listenfeldern wird nicht der Klartext - z.B. "Modul Eins; MyE" - abgespeichert, sondern ein Index. Also: "1; 12". "1" bedeutet: "Verwende Modul Eins". "12" bedeutet: "Verwende den physikalischen Eingang Nr. 12". Diese beiden Zahlen 1 und 12 werden als Index benutzt, sodass dann hinterher im Listenfeld "Modul Eins; MyE" steht. Ich würde also nicht das Listenfeld speichern und laden und daraus dann die Modul-Array belegen, sondern eben umgekehrt.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Und außerdem, Herbert, muss ich dir noch einen Tipp geben.
Die fünf FOR-Schleifen im Event Speichern schreien gerade zu nach einem Unterprogramm. Ein Unterprogramm hat einen gewaltigen Vorteil: Wenn das Unterprogramm für ein Modul funktioniert, wird es auch für alle weiteren Module funktionieren. So wie du es jetzt hast, besteht folgendes Problem: Wenn du dich in der For-Schleife für "Modul Drei" vertippst, wirst du u.U. diesen Fehler niemals feststellen - weil du z.B. nur mit Modul Eins arbeitest bzw. testest.
Die anderen Gründe wie Übersichtlichkeit, Platz/Zeit-Ersparnis etc. sind eher nebensächlich - was nützt mir ein übersichtliches Programm, wenn's nicht funktioniert.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Gesetzt der Fall, du hast in Modul Eins allen 24 Eingängen Pseudonamen zugewiesen. Weiterhin gelte: In einem (egal welchem) Listenfeld hast du aber immer nur Modul Eins Eingang 12 - Pseudoname MyE - verwendet (und wenn 12 Stück). Wenn du jetzt nur die Listenfelder speicherst (und nicht die Eingänge), dann speicherst du ja auch nur "Modul Eins - MyE" - nicht aber noch die anderen 23 Pseudonamen ab. Wenn du diese (Listenfeld!)-Datei jetzt lädst, kannst du auch nur den Pseudonamen MyE irgendwo an ein Modul vergeben - die anderen 23 weißt du nämlich nicht mehr. Ein weiteres Problem: Pseudoname MyE - welchem physikalischen Eingang ist der denn zuzuweisen? E-was?
Ich würde das ja so machen:
Abgespeichert werden die Pseudonamen in den Modul-Listen bzw. die gesamten Modullisten. (Im übrigen würde ich da INI-Files nahmen). Bei den Listenfeldern wird nicht der Klartext - z.B. "Modul Eins; MyE" - abgespeichert, sondern ein Index. Also: "1; 12". "1" bedeutet: "Verwende Modul Eins". "12" bedeutet: "Verwende den physikalischen Eingang Nr. 12". Diese beiden Zahlen 1 und 12 werden als Index benutzt, sodass dann hinterher im Listenfeld "Modul Eins; MyE" steht. Ich würde also nicht das Listenfeld speichern und laden und daraus dann die Modul-Array belegen, sondern eben umgekehrt.
Kannst du mir das wohl mal noch ein bischen erklären, oder noch besser ein kleines beispielprogramm dazu geben ?? Danke!
' schrieb:Und außerdem, Herbert, muss ich dir noch einen Tipp geben.
Die fünf FOR-Schleifen im Event Speichern schreien gerade zu nach einem Unterprogramm. Ein Unterprogramm hat einen gewaltigen Vorteil: Wenn das Unterprogramm für ein Modul funktioniert, wird es auch für alle weiteren Module funktionieren. So wie du es jetzt hast, besteht folgendes Problem: Wenn du dich in der For-Schleife für "Modul Drei" vertippst, wirst du u.U. diesen Fehler niemals feststellen - weil du z.B. nur mit Modul Eins arbeitest bzw. testest.
Die anderen Gründe wie Übersichtlichkeit, Platz/Zeit-Ersparnis etc. sind eher nebensächlich - was nützt mir ein übersichtliches Programm, wenn's nicht funktioniert.
Es geht mir erst mal darum, dass das Programm mal halbwegs läuft und nicht um solche "Schönheitsfehler"!
Aber du hast schon recht !!