String in einer DB nach Integer wandeln

noeppkes

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

ich möchte einen String in eine Integer-Zahl wandeln.
Der String liegt bei mir in DB20 ab Position 8 mit 4 Bytes Länge.

Ich habe herausgefunden, dass ich dazu den FC38 nehmen kann.
Nur wie bekomme ich die Daten in den FC38

in "C" wäre das:

st[0] = db20.DBB 8
st[1] = db20.dbb 9
st[2] = db20.dbb 10
st[3] = db20.dbb 11

dann FC38 mit st füttern und das Ergebnis auslesen.

Wie aber setze ich st zusammen in AWL.

Kann mir jemand helfen ?

noeppkes ...
 
Guten Morgen,

du mussst dir über das Format des Strings im klaren sein bevor du den wandelst. Wenn du den FC38 im Werkzeugkasten auswählst und dann F1 drückst, bekommst du die Hilfe dazu. Den String wirst du wohl symbolisch am einfachsten anbinden können.

Am besten du postet mal den Aufbau des Strings im DB, dann können dir schon mehr Leute Info´s bringen.

Gruß, pt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
String in INT wandeln ?

Hallo,

das ganze verstehe ich leider nicht. Ich bin leider noch Anfänger.

Mein DB20 wurde wie folgt angelegt:

Name: COMMENT Type: Array [0 ... 1023]

In den Bytes von 8 ... einschl. 11 steht nun ein ASCII-String.
z.B.:

0327

Diesen möchte ich nun in eine Integer-Zahl wandeln.
Da stehe ich vor folgendem Problem:

Wie bekomme ich die Bytes ausgeschnitten und wie übergebe ich diese dann dem (ich glaube) FC38.

Ich habe das ganze folgendermaßen probiert, jedoch ohne Erfolg:


Code:
      CALL  "BLKMOV"
       SRCBLK :="RCV_DB_A".COMMENT[8]   //"RCV_DB_A".comment[8] byte 4
       RET_VAL:="BLKMOV_ERROR"
       DSTBLK :=#HS_IR_Code
 
       CALL  "STRNG_I"
       S      :=#HS_IR_Code
       RET_VAL:="IR_Nummer"

IR_Nummer ist hierbei global angelegt als Integer,
#HS_IR_Code ist als Temp (String[20]) im OB1 angelegt.

Kann mir jemand helfen ?

noeppkes ...
 
Probiere es mal so:

Code:
      CALL  SFC   20
       SRCBLK :=P#DB20.DBX8.0 BYTE 4    // //"RCV_DB_A".comment[8] byte 4
       RET_VAL:=#RetVal
       DSTBLK :=P#DB20.DBX[COLOR=Red]1026[/COLOR].0 BYTE 20

      L     4                     //4 Zeichen Länge
      T     DB20.DBB [COLOR=Red]1024[/COLOR]         //max
      T     DB20.DBB [COLOR=Red]1025[/COLOR]         //aktuell

      CALL  FC    38
       S      :="RCV_DB_A".HS_IR_CODE
       RET_VAL:=#IR_Nummer
In deinem DB20 ab DBB1024: HS_IR_CODE STRING[20] ''
Oder auch in einem beliebigen anderen DB. Nur wenn in Byte 0 und 1 des Strings HS_IR_CODE auch etwas > 0 eingetragen ist, arbeitet der FC38.
 
Danke Ralle

Hallo Ralle,

das sieht gut aus.
Ich werde es heute abend gleich probieren.
Danke schon mal im voraus.

(Es kann doch so einfach sein, wenn man es weiss)

noeppkes ...
 
Zurück
Oben