INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Cluster "manuell" zur Laufzeit erstellen?



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!

10.01.2012, 10:10
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
Cluster "manuell" zur Laufzeit erstellen?
Hallo liebe LFV Nutzer,

gibt es eine Möglichkeit beliebige Cluster zur Laufzeit zu erzeugen?

Das Problem ist: Ich brauche in der Regel bei Datei IO Dateien die die Daten als (für Menschen lesbare ;-) ) Tabellen von Zahlen und Strings enthalten. Entsprechend bin ich bisher noch auf keinen grünen Zweig dabei gekommen mir eine Standardfunktion für Datei IO zu definieren. Zwar könnte man das ganze über ein Objekt machen, dass die Strings und Zahlen intern richtig ablegt und dann jeweils über Indizes (für Zeilen und Spalten) wie ein Array angesprochen wird. Die Zeilendefinition kann dann einfach über einen Formatstring geschehen. Allerdings würde ich als Aus- bzw. Eingabe einen Cluster bevorzugen (der über unbundle / bundle by name weiter angesprochen werden kann), da ansprache der einzelnen Elemente über Indizes doch ein wenig kompliziert erscheint und man manuell richtig auswählen muss ob man die Methode für String oder Zahl ausgeben braucht.

Deswegen habe ich mich gefragt ob man auch einfach den Cluster zur Laufzeit erzeugen kann. Direkt durch hinzufügen von Elementen scheint das nicht zu gehen (?) - aber selbst wenn müsste man den Cluster ja vermutlich als Variant aus der Einleseroutine herausführen und vor der Weiterverarbeitung wieder auf den Cluster casten. Deswegen habe ich überlegt ob man vielleicht einfach manuell die Binärdaten für einen Cluster erzeugen kann (die man mit flatten to String erhalten würde), so dass ich das Ausgangsfile dann entsprechend dem Formatstring parsen würde und dann aus den Daten einen Cluster als Datenstream erzeuge, der dann Ausgegeben wird. Den muss ich dann nur noch im eigentlichen Programm (das die Leseprozedur nutzt) wieder in einen Cluster umwandeln.

Geht das?
Oder hat jemand eine andere Möglichkeit mit sowas umzugehen?

Als Alternative fällt mir auf Anhieb nur ein zwei Dateien zu speichern. Einmal in der Form als Datenstream und eine zugehörige Datei die das ganze in menschenlesbarer Form enthält.

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.01.2012, 10:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2012 10:20 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Cluster "manuell" zur Laufzeit erstellen?
Hallo Kiesch,

Zitat:gibt es eine Möglichkeit beliebige Cluster zur Laufzeit zu erzeugen?
Nein. Strikte Datentypisierung...

Zitat:so dass ich das Ausgangsfile dann entsprechend dem Formatstring parsen würde und dann aus den Daten einen Cluster als Datenstream erzeuge, der dann Ausgegeben wird.
Das würde noch gehen. Wobei NI immer die Möglichkeit hat, die interne Repräsentation zu ändern, womit du dann inkompatibel wirst...

Zitat:Den muss ich dann nur noch im eigentlichen Programm (das die Leseprozedur nutzt) wieder in einen Cluster umwandeln.
Siehe erster Punkt oben...

Du hast immer das Problem, dass du schon während des Kompilierens (= Edit Time) den Datentyp kennen musst. Du kannst also später nicht einfach andere Datentypen unterschieben. Es sei denn, du programmierst alles mit Variants (oder Strings) und jeweiligem Parser für alle geplanten Datentypen - das kann schnell sehr aufwendig werden...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2012, 15:36 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2012 15:38 von Kiesch.)
Beitrag #3

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Cluster "manuell" zur Laufzeit erstellen?
Würde eine Änderung der Clusterdefinition durch NI nicht auch mit Flatten to String umgewandelte Cluster betreffen? Von daher sollte sich an der (Struktur-)definition doch nichts ändern (?). Einfach weil man das ja sonst nicht vernünftig nutzen könnte (um Daten wieder einzulesen die mit einer Vorgängerversion gespeichert wurden). Und im Prinzip weis ich ja zur Programmierzeit was ich für nen Cluster verwende. Allerdings weis ich das eben nur in nem Teil des Programms (der dann mit dem eingelesenen weiterarbeitet bzw. auszuschreibende Daten liefert).


Wie macht ihr denn allgemein Datei IO mit ner vernünftigen Schnittstelle? (die schon Weiterverarbeitung wie parsen von Daten, Header beim parsen Ignorieren, Ignorieren entsprechend markierter Kommentarzeilen etc. implementiert) Hat da jemand zumindest nen Tipp in ne bestimmte Richtung?

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2012, 15:39 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2012 15:40 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Cluster "manuell" zur Laufzeit erstellen?
Hallo Kiesch,

Zitat:Würde eine Änderung der Clusterdefinition durch NI nicht auch mit Flatten to String umgewandelte Cluster betreffen?
Dann rate mal, warum die Datalog-Filefunktionen von NI nur noch so stiefmütterlich behandelt werden und man jetzt freundlich, aber bestimmt, in Richtung TDMS geleitet wird! Dort hatte man eben diese Probleme, ich glaube bei Einführung von LV6 oder LV7 - die Clusterdefinition änderte sich und man konnte plötzlich keine alten Datalogs mehr lesen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2012, 16:18
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Cluster "manuell" zur Laufzeit erstellen?
Würde es nicht mit einem work arround machbar sein?
1. Alle gewünschten Clustertypen im Voraus erstellen und dann zur Laufzeit nur den gerade gewünschten Clustertyp benutzen und im FP sichbar machen.
Oder
2. Einen sehr komplexen Cluster erstellen, der alles enthält, was je gebraucht werden könnte und zur Laufzeit nur die Elemente sichtbar machen, die tatsächlich benutzt werden. (Ich weiß nicht genau, aber wahrscheinlich kann man zur Laufzeit sogar die Abmessungen des Clusters anpassen)

Durch Verwendung von Arrays im Cluster wäre noch zusäzlich eine gewisse Flexibilität in Bezug auf die Anzahl von Daten gegeben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2012, 16:48
Beitrag #6

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Cluster "manuell" zur Laufzeit erstellen?
hi Lucki,

ich mache das mit LVOOP. Bis auf die Ausgabe ist mir auch eigentlich schon alles klar. Jede Tabelle wird dabei als Objekt mit einem Array pro benötigtem Datentyp repräsentiert, das alle Daten dieses Datentyps als Container aufbewahren kann (davon werden dann in der Regel einige leer sein). Dazu einen Formatstring der spezifiziert wie die Zeilen aufgebaut sind (Reihenfolge der Datentypen). Entsprechend wäre es dann auch kein Problem intern den Cluster zusammenzubauen (auslesen Formatstring des Objekts; parsen; feststellen welches Array an welcher Stelle gelesen werden muss; entsprechende Ausleseprozedur auswählen; in Cluster schreiben). Das Objekt zu programmieren lohnt aber halt nur, wenn ich genau das intern in der Schnittstelle machen kann und nicht jedesmal im konkreten Programm dahinterhängen muss.
Ich werd das jetzt vermutlich so machen, dass einfach jeder praktisch gebrauchte Cluster als eigene Methode implementiert wird die den Cluster in der "Richtigen" Form ausgibt. Brauche das ja sowieso nur zur späteren Weiterverwendung.

Hatte auch noch überlegt ob es was bringt eine Referenz auf einen "Beispielcluster" an das Programm zu übergeben, ausdem man dann programmatisch über die Label der einzelnen Cluster Elemente den Cluster befüllt (die würden dann in der Datei einfach mit angegeben; entsprechend würde dann in die richtigen Felder geschrieben). Allerdings nehme ich auch da an, dass das nicht geht, da man dann ja wieder zur Compilezeit nicht weis was man später genau schreibt und das ja tatsächlich darauf hinauslaufen könnte das man versucht einen String in ein Double zu schreiben o.ä.



Nachtrag:

Eigentlich bin ich ja ein Trottel. Ich brauche ja nur ein Referenzobjekt zu bauen, dass wie beschrieben funktioniert und anschließend davon ein Kindobjekt erben, dass dann die konkrete Ausgabe für die Daten implementiert. Das könnte funktionieren.

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Elemente Cluster in Cluster ansprechen simcum 3 3.722 02.10.2023 10:49
Letzter Beitrag: th13
  Laufzeit Problem? Timesplinter 9 6.963 03.11.2017 12:50
Letzter Beitrag: GerdW
  Element in Cluster of Array of Cluster ausblenden R.Fuertig 4 7.288 26.09.2016 07:47
Letzter Beitrag: GerdW
  Ringtextwechsel zur Laufzeit andrepf 3 4.017 02.05.2016 14:16
Letzter Beitrag: Lucki
  Frontpanel bei Laufzeit erstellen tschaka81 2 3.825 31.03.2015 16:30
Letzter Beitrag: tschaka81
  String Array zur Laufzeit wandeln und einem Cluster zuführen hTed 6 6.255 28.11.2014 14:44
Letzter Beitrag: Lucki

Gehe zu: