Int na. String und String zusammensetzen

bastler

Level-1
Beiträge
254
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Habe folgende Aufgabe:
Im DB1.dbw0 steht ein Integerwert. Dieser soll in einen String gewandelt werden. Anschließend soll dieser String mit einen anderen String zusammengesetzt werden. Folgendes habe ich bisher gemacht:
Code:
NW1

call FC 16
I      :=DB1.DBW0
RET_VAL:=#temp1


NW2

call SFC20
SRCBLK :=#temp1
RET_VAL:=MW200
DSTBLK :=P#DB2.dbx0.0 BYTE 200
Ist das bishier soweit richtig? Wie setze ich dann diesen String und einen String, der im DB3 gespeichert ist zusammen?
Schon mal Danke im voraus!

MfG
bastler
 
String

Hi,
wie soll der "Endstring" denn formatiert sein, ist das festgelegt?
Die zwei Zeichen, die du konvertiert hast, kannst ja am Ende einer Stringvariable kopieren; da sollte man nur aufpassen mit den ersten 2 Bytes
der Stringvariable, denn da stehen die maximale Länge und die aktl. Länge drin...Sonst kannst ja basteln wie du möchtest.

V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Also der String in dem der andere eingefügt werden soll hat folgendes Aussehen:
'$$T1$R$$VP0$R$$VE......$R$$VP5$R$$VE......$R'
Da wo die Punkte sind soll der String mit den Zeichen aus den anderen String aufgefüllt werden. Die Form des anderen Strings sieht so aus:
'111111222222'
Dabei sollen die ersten 6 Zeichen (die Einsen) in die erste Lücke eingefügt werden und die letzten 6 Zeichen (die Zweien) in die zweite Lücke.

Aber im Moment läuft der FC16 nicht (siehe ersten Beitrag), also die Wandlung von Integer nach String funzt nicht, ist da irgendwas besonderes zu beachten?

MfG
bastler
 
Hallo

Also der String in dem der andere eingefügt werden soll hat folgendes Aussehen:
'$$T1$R$$VP0$R$$VE......$R$$VP5$R$$VE......$R'
Da wo die Punkte sind soll der String mit den Zeichen aus den anderen String aufgefüllt werden. Die Form des anderen Strings sieht so aus:
'111111222222'
Dabei sollen die ersten 6 Zeichen (die Einsen) in die erste Lücke eingefügt werden und die letzten 6 Zeichen (die Zweien) in die zweite Lücke.

Aber im Moment läuft der FC16 nicht (siehe ersten Beitrag), also die Wandlung von Integer nach String funzt nicht, ist da irgendwas besonderes zu beachten?

MfG
bastler

Ich denke mal, dein String ist als Temp angelegt. Dieser muß initialisiert werden. Also in SCL machst du einfach mal am Anfang, vor Call FC16, eine Zuweisung auf den TempString

#temp1 := "111111222222"
 
Also die Konvertierung von Int nach String funktioniert jetzt. Habe hier im Forum eine Lösung gefunden:
Code:
call FC 16
I      :=DB1.DBW0
RET_VAL:="I_String".String_wert
Gefällt mir so besser als mit einer Temp-Variablen.

Aber wie krieg ich den nun die Strings zusammengebastelt? (Hab damit noch nie was zu tun gehabt)

MfG
bastler
 
Zuviel Werbung?
-> Hier kostenlos registrieren
String..

Hi,
alles in der SPS sind Speicherbereiche...einfach Bytes.
Man kann mit SFC20 Bereiche von hier nach dort kopieren, nur gewusst wie..
Z.B.: mein "String" Bereich sitzt im:
DB10.DBB 0 ..bis.. DBB 50

So, wenn ich , sagen wir 6 Bytes nach DB10.DBB18 ..bis DBB23 kopiere,
dann habe ich da neues String "geschaffen".
 
Super, vielen Dank jetzt klappt das. Aber eine Frage hätte ich noch, der String, der aus dem Integer konvertiert wird, soll immer aus 6 Zeichen bestehen. Ist der Integer z.B. 1, dann wäre ja auch der String '1', es sollen dann aber 5 Nullen vorangestellt werden. Das der String dieses Format hat:
'000001'
Die Nullen können auch Leerzeichen sein.
Wie kann man denn sowas realisieren?

MfG
bastler
 
Hi,
tja, da ist ein wenig basteln angesagt..man nimmt als Platzhalter schon mal ein String mit "000000", und kopiert die konv. Zahl immer von hinten:
"000000" , kommt die Zahl 1 dazu -> "000001", und so weiter.
Man berechnet wie lang die Zahl ist, und je nach dem die Adresse, wo kopiert wird.

V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke vladi für deine Hilfe. Leider hab ich es so nicht hingekriegt, aber ich habe einen anderen Lösungsweg gefunden. Ich überschreibe als erstes alle 6 Bytes in dem String mit Leerzeichen. Danach schreibe ich auf diese Bytes den gewandelten Integerwert. Das Ergebnis ist, das zwar nicht die einstelligen Zahlen rechts stehen, sondern links, aber es steht halt auch nur diese Zahl drin da der Rest mit Leerzeichen aufgefüllt ist.

MfG
bastler
 
Hast Du nur positive Integer-Werte oder auch negative Integer-Werte?

Und wenn Du auch negative Integer-Werte hast, muss dann das negative Vorzeichen auch in den String geschrieben werden?

Gruß Kai
 
Zurück
Oben