-> Hier kostenlos registrieren
Guten Tag,
ich hab mal wieder ein Problem, und denke wohl etwas kompliziert... vielleicht geht es ja ganz einfach.
Von einer Maschine bekomme ich Werte übermittelt. Diese liegen in einem Array of CHAR.
Beispiel:
Also handelt es sich vereinfacht um einen String '-123456.123456'
Mit der tollen Funktion FC39 STRNG_R (STRING_TO_REAL) hoffte ich mein Problem zu lösen, aber siehe da... Siemens kann halt nicht einfach.
Es muss folgendes Format eingehalten werden
Warum das so ist, weiß ich nicht. Wenn ich z.B. folgendes tippe geht es:
Wohingegen dieses nicht tut
Das sollte ja eigentlich KEINEN Unterschied machen (Außer Siemens hat es nicht so mit den ersten zwei Byte des String?)
Mein Ansatz ist nun folgender. Jedes Array Element mit einem Faktor versehen,und manuell zu einem Real zusammen zu basteln... aber das muss doch einfacher gehen?!
Also Dann so:
Das sieht aber meiner Meinung nach weder hübsch aus, noch ist es "sauber".
Wie geht ihr mit sowas um? Ich brauche auch die Genauigkeit, mit der die Daten übermittelt werden, also wäre STRING_R eh keine Option für mich.
Das ganze muss später auch rückwärts gehen. Also REAL_TO_STRING.
Freu mich auf eure Vorschläge!
Grüße
Marcel
P.S: Warum kann Siemens nicht einfach einfach sein?
ich hab mal wieder ein Problem, und denke wohl etwas kompliziert... vielleicht geht es ja ganz einfach.
Von einer Maschine bekomme ich Werte übermittelt. Diese liegen in einem Array of CHAR.
Beispiel:
Code:
RCV_ARRAY[0] = VORZEICHEN
RCV_ARRAY[1] = 1
RCV_ARRAY[2] = 2
RCV_ARRAY[3] = 3
RCV_ARRAY[4] = 4
RCV_ARRAY[5] = 5
RCV_ARRAY[6] = 6
RCV_ARRAY[7] = .
RCV_ARRAY[8] = 1
RCV_ARRAY[9] = 2
RCV_ARRAY[10] = 3
RCV_ARRAY[11] = 4
RCV_ARRAY[12] = 5
RCV_ARRAY[12] = 6
Also handelt es sich vereinfacht um einen String '-123456.123456'
Mit der tollen Funktion FC39 STRNG_R (STRING_TO_REAL) hoffte ich mein Problem zu lösen, aber siehe da... Siemens kann halt nicht einfach.
Es muss folgendes Format eingehalten werden
Code:
-1.1234567E+00
Warum das so ist, weiß ich nicht. Wenn ich z.B. folgendes tippe geht es:
Code:
DUMMY:=STRING_TO_REAL('3.1415');
Wohingegen dieses nicht tut
Code:
VARIABLE:='3.1415';
DUMMY:=STRING_TO_REAL(VARIABLE);
Das sollte ja eigentlich KEINEN Unterschied machen (Außer Siemens hat es nicht so mit den ersten zwei Byte des String?)
Mein Ansatz ist nun folgender. Jedes Array Element mit einem Faktor versehen,und manuell zu einem Real zusammen zu basteln... aber das muss doch einfacher gehen?!
Also Dann so:
Code:
RCV_ARRAY[0] = VORZEICHEN
RCV_ARRAY[1] = 1
RCV_ARRAY[2] = 2
RCV_ARRAY[3] = 3
RCV_ARRAY[4] = 4
RCV_ARRAY[5] = 5
RCV_ARRAY[6] = 6
RCV_ARRAY[7] = .
RCV_ARRAY[8] = 1
RCV_ARRAY[9] = 2
RCV_ARRAY[10] = 3
RCV_ARRAY[11] = 4
RCV_ARRAY[12] = 5
RCV_ARRAY[12] = 6
REALVAR:= (RCV_ARRAY[1] * 100 000) + (RCV_ARRAY[2] * 10 000) + (RCV_ARRAY[3] * 1 000) + (RCV_ARRAY[4] * 100) + (RCV_ARRAY[5] * 10) + (RCV_ARRAY[6] * 1) + (RCV_ARRAY[8] * 0.1) + (RCV_ARRAY[9] * 0.01) ...
Das sieht aber meiner Meinung nach weder hübsch aus, noch ist es "sauber".
Wie geht ihr mit sowas um? Ich brauche auch die Genauigkeit, mit der die Daten übermittelt werden, also wäre STRING_R eh keine Option für mich.
Das ganze muss später auch rückwärts gehen. Also REAL_TO_STRING.
Freu mich auf eure Vorschläge!
Grüße
Marcel
P.S: Warum kann Siemens nicht einfach einfach sein?