Kleine STRING_TO_INT Problem

noeppkes

Level-1
Beiträge
150
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Ich habe folgenden SCL-Code:

Code:
               hSTRING:='';
               bString[0]:=5;
               bString[1]:=RCV_DB_A.DBB13;
               bString[2]:=RCV_DB_A.DBB14;
               bString[3]:=RCV_DB_A.DBB15;
               bString[4]:=RCV_DB_A.DBB16;
               bString[5]:=RCV_DB_A.DBB17;
               bString[6] :=0;
               wert := STRING_TO_INT(hString);
Dabei hat der RCV_DB_A.DBB13 ... DBB17 folgenden Wert:

32960
Als "wert" erhalte ich dann: 32767 ??????
Kann STRING_TO_INT nicht weiter als 32767 ?
D.h. der Range von STRING_TO_INT ist von -32768 ... +32767
Wenn ja, wie soll ich dann die Wandlung machen.
Habe Werte von 0 ... 65535 die ich in einem DB als INT Wert speichern möchte.

noeppkes ...
 
Der selbstgebaute String sollte im ersten Byte die maximale Länge, im zweiten Byte die aktuelle Länge enthalten, die abschließende 0 ist überflüssig. Oder habe ich da eben was falsch verstanden?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn deine Zahl nun mal größer ist als der Wertebreich einer INT, dann mußt du eine DINT nutzen und auch in eine DINT wandeln! Deren Wertebereich ist entsprechend größer. Do willst Word speichern, wenn den String wandeln willst, dann "zu Fuß", indem du jede einzelne Ziffer von Char nach Int und dann zu einer Zahl wandlest. Eine Funktion String_to_Word gibt es, meines Wissens, in der Standard-Library nicht. Aber vielleicht hilft dir da die Oscat-Library weiter.
 
Zuletzt bearbeitet:
Hallo argv_usr und Ralle,

vielen Dank.
Dann lag ich wohl richtig, dass der Wertebereich einer INT von -32768 ... 32767 geht.
Habe es nun "von Hand" gemacht und dann in einem DINT abgelegt.

Danke.
noeppkes ...
 
Zurück
Oben