Array von Strings beschreiben

Fluffi

Level-2
Beiträge
451
Reaktionspunkte
69
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo
ich habe in einem Datenbaustein einen Array von 20 Strings von jeweils 20 Bytes.
Wie kann ich in AWL diese Bereiche nun beschreiben.

ich wollte das auf diese weise machen aber das haut nicht hin

U #Ereignis
L "abcdefg"
T DB100.DBB0 (oder .DBB20,.DBB40,usw)
 
Hi,

wie hast du denn deine Strings im DB initialisiert? Als String[20]?
Denn dann besteht der String aus 22 Bytes. In den ersten beiden Bytes ist die initialisierte Länge des Strings und die tatsächlich verwendete Anzahl der Zeichen hinterlegt. Du kannst einfach ein 1414 (hex) in das erste Wort eines jeden Strings schreiben.
Die Zeichen musst du in AWL leider einzeln laden:
l 'a'
T DB100.DBB 2

Gruß puzzlefreak
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ARRAY[0..20] mit jeweils STRING[20]

wobei der Array eigentlich nicht so wichtig ist. Mir gehts primär darum ganze Texte in den String zu schreiben.
Geht das nur Zeichenweise ?

Ist es möglich vorher einen DB mit den Texten zu erstellen und diese dann in den anderen zu kopieren ?
so ungefähr:

U #Ereigneis
L DB2.String04
T DB1.Sting13
 
Hi,

du kannst einen DB mit Texten erstellen und anschließend in deinen DB kopieren.
Wenn du die Strings dort auch mit String[20] deklariert hast kannst du es folgenderweise machen:

UN #Ereignis // String nur schreiben, wenn das Ereignis auch da ist
SPB end

CALL "BLKMOV"
SRCBLK :=P#DB2.DBX 0.0 BYTE 22
RET_VAL:=#ret_val
DSTBLK :=P#DB1.DBX 0.0 BYTE 22

end: nop 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1 Byte : Länge des initialisierten Strings
1 Byte : Anzahl der verwendeten Zeichen
20 Byte: Der String selber

Kuck mal in der Siemens-Hilfe beim String nach. Da ist's beschrieben.

Viele Anwendungen brauchen die ersten beiden Bytes (ok, nicht alle). Aber manche Funktionen (z.B. Wandlungsfunktionen), die z.B. als Eingang einen String erwarten benutzen diese beiden Bytes. Wenn sie leer sind, dann interpretieren sie das als leeren String.
 
Zurück
Oben