-> Hier kostenlos registrieren
Folgendes Minimal-Bsp macht mir gerade Ärger:
Ich möchte abhängig vom Übergabeparameter WDHL eine variable Anzahl von Wörtern in meinen Lokalstack kopieren. Funzt so aber nicht.
Fehlercode ist 8325h, sagt also das Pointer2 im falschen Bereich ist (Pointer2 = ANY im L-Stack).
Wird anstelle des 2. Pointers ein LW angegeben funktioniert das einwandfrei, ist aber halt nicht flexibel. Wird für den 2. Pointer Speicherbereich DB vorgegeben funktioniert sogar die variable Länge, ist aber halt nicht lokal.
Wird der Pointer auf die lokale Variable nicht unterstützt? Mich macht das alles ein wenig stutzig.
Code:
// Pointer 1
L B#16#10 // 10h für S7 BYTE
T LB 20
L B#16#4 // 04h für WORD BYTE
T LB 21
L #WDHL // Wiederholungen INT
T LW 22
L 2 // DB-Nummer INT
T LW 24
L 14 // Anfangsadresse INT
SLD 3
OD DW#16#84000000 // Speicherbereich (DB)
T LD 26
// Pointer 2
L B#16#10 // 10h für S7 BYTE
T LB 30
L B#16#4 // 04h für WORD BYTE
T LB 31
L #WDHL // Wiederholungen INT
T LW 32
L 0 // DB-Nummer INT
T LW 34
L 42 // Anfangsadresse INT
SLD 3
OD DW#16#86000000 // Speicherbereich (L)
T LD 36
CALL "BLKMOV"
SRCBLK :=#Pointer1
RET_VAL:=#abc
DSTBLK :=#Pointer2
Fehlercode ist 8325h, sagt also das Pointer2 im falschen Bereich ist (Pointer2 = ANY im L-Stack).
Wird anstelle des 2. Pointers ein LW angegeben funktioniert das einwandfrei, ist aber halt nicht flexibel. Wird für den 2. Pointer Speicherbereich DB vorgegeben funktioniert sogar die variable Länge, ist aber halt nicht lokal.
Wird der Pointer auf die lokale Variable nicht unterstützt? Mich macht das alles ein wenig stutzig.