- Beiträge
- 24.298
- Reaktionspunkte
- 7.716
-> Hier kostenlos registrieren
In SCL kann man Strings mit String-Konstanten vergleichen:Will ich nun die Stringvariable mit der Zeichenkette "NoRead" vergleichen, hab ich nur die möglichkeit in einem Datenbaustein eine Variable Typ String[25], mit dem Anfangswert "NoRead" zu erstellen, um diese dann mit der Stringvariable in der das Leseergebniss steht zu vergleichen.
Mit dieser lösung bin ich aber nicht ganz glücklich, da ich immer von diesem 1x beschriebenen wert abhängig bin.
Code:
IF myString = 'NoRead' THEN
...
In AWL geht das nicht.
In AWL könntest Du vor dem Vergleich einen Vergleichsstring mit dem Inhalt 'NoRead' initialisieren:
Code:
// TEMP: temp_VergleichsString : STRING[25]
LAR1 P##temp_VergleichsString // Pointer auf Anfang der Vergleichs-Stringvariable
L DW#16#19064E6F // 25, 6, 'No'
T D [AR1,P#0.0] // die ersten 4 Bytes von temp_VergleichsString initialisieren
L 'Read'
T D [AR1,P#4.0] // das 5. bis 8. Byte von temp_VergleichsString initialisieren
CALL "EQ_STRNG"
S1 :="DB72".MyString
S2 :=#temp_VergleichsString // 'NoRead'
RET_VAL:=#result
oder direkt den Abschnittsweisen Vergleich mit je maximal 4 Zeichen durchführen:
Code:
// Pointer auf Anfang der Stringvariable "DB72".MyString
LAR1 P#DBX 0.0 //Anfangsadresse von MyString im DB72
AUF "DB72"
//oder
// LAR1 P##MyString //wenn MyString in TEMP, STAT, IN, ... liegt
U(
L D [AR1,P#0.0] // Bytes 1 bis 4 der Stringvariable MyString
L DW#16#19064E6F // 25, 6, 'No'
==D
)
U(
L D [AR1,P#4.0] // Bytes 5 bis 8 der Stringvariable MyString
L 'Read'
==D
)
= #result
Harald
Zuletzt bearbeitet: