L DBD [hPointer] // hPointer wäre hier ein DWORD aus dem TEMP-Bereich
So, nun lade ich DB1.DBD0, richtig?AUF DB1
L P#DBX0.0
LAR1
L D [AR1,P#0.0]
L P##ANYPOINTER // Eingansvariable, als ANY deklariert
LAR1
L D [AR1,P#0.0]
Ein Fehler in Volkers Beitrag ist es nicht. Es ist ganz einfach ein Unterschied zwischen FC und FB. In einem von beiden geht nur eins von beiden... da könnte tatsächlich ein Fehler in Volkers Beitrag sein ...
Versuch mal :
Code:L P##myAny LAR1
// Any-Pointer aufsplitten
-------------------------------------
L P##IN_Any // IN-Variable
LAR1
L B [AR1,P#1.0]
T #Datentyp
L W [AR1,P#4.0]
T #DB_Nummer
L D [AR1,P#6.0]
T #Bereichszeiger
//; Auswerten
------------------------------
L #Datentyp
L B#16#5
==I
R #IST_Real // Out-Variable
S #IST_Int
R #IST_Dint
L #Datentyp
L B#16#8
==I
S #IST_Real
R #IST_Int
R #IST_Dint
L #Datentyp
L B#16#7
==I
R #IST_Real
R #IST_Int
S #IST_Dint
AUF DB [#DB_Nummer]
L #Bereichszeiger
LAR1
U #IST_Real
SPB REAL
U #IST_Dint
SPB DINT
U #IST_Int
SPB INT
REAL: L DBD [AR1,P#0.0]
T #Istwert_Real
BEA
DINT: L DBD [AR1,P#0.0]
T #Istwert_DINT
BEA
INT: L DBW [AR1,P#0.0]
T #Istwert_INT
BEA
Mach das so und nicht anders! Versuche nicht eine eierlegende Wollmichsau zu kreieren! Ein Any übergibt ohnehin nur die Datenlänge, nicht den Datentyp. Der nächste schreibt ein DINT statt einer REAL an den Eingang. Selbst ein Parameter zur Parameterauswahl macht nur in Ausnahmefällen Sinn...Ich könnte nun für jeden Datentyp eine eigene Funktion schreiben oder für jeden Datentyp Eingangsvariablen definieren oder vor dem FC Aufruf die Variablen ins richtige Format wandeln...
Vielleicht beachtest du nun auch endlich mal die o.g. links! Dort ist eigentlich alles zum Any-Pointer beschrieben...um den an die Funktion übergebenen any-Pointer zu zerlegen...
Ich habe jetzt fix noch mal nachgeschlagen. Tatsächlich gibt es Unterscheidungenen im Any-Zeiger z.Bsp. zwischen Real und DINT. Das war mir aus meiner Sichtweise garnicht so bewusst. Alleine die Tatsache dass symbolisch übergebene Anys immer in Byte übergeben werden, führten mich zu der Aussage. Ok, dann wäre das machbar. Ich würde trotzdem davon absehen. Obwohl... vieleicht denke ich nochmal darüber nach..ist ja demnach eigentlich garkein Problem...Was denn nun?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?