19.02.2013, 16:05
Hallo liebe LV Gemeinde,
habe mal eine Nachfrage / Info. Wer ins ab und an mal ins LVOOP Forum schaut hats ja vielleicht schon gesehen, dass ich mir mal eine "Number" Klasse gebaut hatte die unter anderem nen Variant einliest und anschließend in ne Unterklasse des entsprechenden Typs umwandelt. Habe dabei jetzt gerade eine "interessante" (=ärgerliche) Sache entdeckt:
Offenbar kennt Labview aus irgendeinem Grund 2 Arten von Doubles. Die eine gibt beim Drüberhovern in der Kontexthilfe aus sie sei: "Numerisch(Double[...])", die andere "(Double[...])" *ohne das Numerisch*
Das erste kriegt man aus Numerischen Controls raus (kann man aber offenbar auch aus Rechenoperationen rauskriegen - warum, wieso und vor allem wann - keine Ahnung), das zweite aus Konstanten die man aufs BD droppt.
Warum ist das ein Problem? Nun, meine Klasse untersucht auf "Number" Ebene den Typstring und erstellt dann eine Adäquate Kindklasse. Dummerweise ist der Typ String von Double: [4, 10]
Während der von Numerisch(Double) zum Beispiel: [14, 16394, 2382, 30061, 25970, 26995, 25448] ist... (ja ich habe grade gesehen, dass der nicht immer der gleiche ist...)
Entsprechend führt das zu Fehlern. In der LV Hilfe ist auch nur angegeben, dass für Zahlen der Typ String [4, Zahl] ist wobei Zahl den typ definiert (DBL, I32 etc. pp.). Diese komische Zweite Art von Zahl wird da garnicht erwähnt.
Weder habe ich ne Ahnung wie dieser zweite Typstring überhaupt zu entschlüsseln ist, noch verstehe ich warum das verschieden gehandhabt wird. Vor allem da nirgends ein Cast auf was anderes angezeigt wird (wenn ich Numerisch(Double) zu (Double) addiere, dann kommt double raus, ohne dass der am Eingang irgendwas rot markiert)... Wann Rechenoperationen diesen Numerisch(Double) Typ erhalten und wann nicht ist mir auch etwas unklar. Scheinbar ist Array Addition zum Beispiel typerhaltend.
*edit* Aus irgendwelchen Gründen schleift Labview den Bedienfeldnamen oder Untertitel (im Datentyp) mit und erhält den bei Addition (benutzung des Addition primitive VI) mit sich selbst nicht, bei Addition mit was anderem schon - *verwirrt*
Warum man den das dann aber noch dazu in den typstring reinsteckt ist mir unverständlich, da der Bedienfeldname eigentlich nur zur Programmierzeit eine Bedeutung hat, entsprechend ist der für den Typstring grundsätzlich völlig ohne Belang (da der Typstring ja eigentlich den Datentyp angeben soll und nicht woher der kommt).
Ich bin jedenfalls nachhaltig verwirrt. Und frage mich ob man das Problem lösen kann (im Sinne von: den Zusatz verändern oder trotz Zusatz den Typ richtig auslesen).
gruß Kiesch
habe mal eine Nachfrage / Info. Wer ins ab und an mal ins LVOOP Forum schaut hats ja vielleicht schon gesehen, dass ich mir mal eine "Number" Klasse gebaut hatte die unter anderem nen Variant einliest und anschließend in ne Unterklasse des entsprechenden Typs umwandelt. Habe dabei jetzt gerade eine "interessante" (=ärgerliche) Sache entdeckt:
Offenbar kennt Labview aus irgendeinem Grund 2 Arten von Doubles. Die eine gibt beim Drüberhovern in der Kontexthilfe aus sie sei: "Numerisch(Double[...])", die andere "(Double[...])" *ohne das Numerisch*
Das erste kriegt man aus Numerischen Controls raus (kann man aber offenbar auch aus Rechenoperationen rauskriegen - warum, wieso und vor allem wann - keine Ahnung), das zweite aus Konstanten die man aufs BD droppt.
Warum ist das ein Problem? Nun, meine Klasse untersucht auf "Number" Ebene den Typstring und erstellt dann eine Adäquate Kindklasse. Dummerweise ist der Typ String von Double: [4, 10]
Während der von Numerisch(Double) zum Beispiel: [14, 16394, 2382, 30061, 25970, 26995, 25448] ist... (ja ich habe grade gesehen, dass der nicht immer der gleiche ist...)
Entsprechend führt das zu Fehlern. In der LV Hilfe ist auch nur angegeben, dass für Zahlen der Typ String [4, Zahl] ist wobei Zahl den typ definiert (DBL, I32 etc. pp.). Diese komische Zweite Art von Zahl wird da garnicht erwähnt.
Weder habe ich ne Ahnung wie dieser zweite Typstring überhaupt zu entschlüsseln ist, noch verstehe ich warum das verschieden gehandhabt wird. Vor allem da nirgends ein Cast auf was anderes angezeigt wird (wenn ich Numerisch(Double) zu (Double) addiere, dann kommt double raus, ohne dass der am Eingang irgendwas rot markiert)... Wann Rechenoperationen diesen Numerisch(Double) Typ erhalten und wann nicht ist mir auch etwas unklar. Scheinbar ist Array Addition zum Beispiel typerhaltend.
*edit* Aus irgendwelchen Gründen schleift Labview den Bedienfeldnamen oder Untertitel (im Datentyp) mit und erhält den bei Addition (benutzung des Addition primitive VI) mit sich selbst nicht, bei Addition mit was anderem schon - *verwirrt*
Warum man den das dann aber noch dazu in den typstring reinsteckt ist mir unverständlich, da der Bedienfeldname eigentlich nur zur Programmierzeit eine Bedeutung hat, entsprechend ist der für den Typstring grundsätzlich völlig ohne Belang (da der Typstring ja eigentlich den Datentyp angeben soll und nicht woher der kommt).
Ich bin jedenfalls nachhaltig verwirrt. Und frage mich ob man das Problem lösen kann (im Sinne von: den Zusatz verändern oder trotz Zusatz den Typ richtig auslesen).
gruß Kiesch