1.5 Codesys在超长字符串(大于255)判断一致的功能
1、判断超长字符串1与超长字符串2完全一致。具体功能代码如下:FUNCTION StringEquals : BOOL
VAR_INPUT
InString1 : STRING(1000);
InString2 : STRING(1000);
END_VAR
VAR
pbyTemp1: POINTER TO BYTE;
pbyTemp2: POINTER TO BYTE;
END_VAR
//比较超长字符串1和超长字符串2全部一致
StringEquals := TRUE;
pbyTemp1 := ADR(InString1);
pbyTemp2 := ADR(InString2);
WHILE pbyTemp1^ <> 0 DO
IF pbyTemp1^ <> pbyTemp2^ THEN
StringEquals := FALSE;
EXIT;
END_IF;
pbyTemp1 := pbyTemp1 + 1;
pbyTemp2 := pbyTemp2 + 1;
END_WHILE;
IF pbyTemp2^ <> 0 THEN
StringEquals := FALSE;
END_IF;2、判断超长字符串1与超长字符串2一致,但允许超长字符串2比字符串1长。具体功能代码如下:
FUNCTION StringEqualsAtStart : BOOL
VAR_INPUT
InString1 : STRING(1000);
InString2 : STRING(1000);
END_VAR
VAR
pbyTemp1: POINTER TO BYTE;
pbyTemp2: POINTER TO BYTE;
END_VAR
//比较超长字符串1和超长字符串2一致,超长字符串2可以长于超长字符串1
StringEqualsAtStart := TRUE;
pbyTemp1 := ADR(InString1);
pbyTemp2 := ADR(InString2);
WHILE pbyTemp1^ <> 0 DO
IF pbyTemp1^ <> pbyTemp2^ THEN
StringEqualsAtStart := FALSE;
EXIT;
END_IF;
pbyTemp1 := pbyTemp1 + 1;
pbyTemp2 := pbyTemp2 + 1;
END_WHILE;2、判断超长字符串1与超长字符串2的前半部分一致,且超长字符串2有指定的分隔符。具体功能代码如下:
FUNCTION StringEqualsAtStartWithDelimiter : BOOL
VAR_INPUT
InString1 : STRING(1000);
InString2 : STRING(1000);
InDelimiter : BYTE;
END_VAR
VAR
pbyTemp1 : POINTER TO BYTE;
pbyTemp2 : POINTER TO BYTE;
END_VAR
//比较超长字符串1和超长字符串2一致,并且最后为指定的分隔符
StringEqualsAtStartWithDelimiter := TRUE;
pbyTemp1 := ADR(InString1);
pbyTemp2 := ADR(InString2);
WHILE pbyTemp1^ <> 0 AND pbyTemp2^<> 0 DO
IF pbyTemp1^ <>pbyTemp2^ THEN
StringEqualsAtStartWithDelimiter := FALSE;
EXIT;
END_IF;
pbyTemp1 := pbyTemp1 + 1;
pbyTemp2 := pbyTemp2 + 1;
END_WHILE;
IF pbyTemp2^ <> InDelimiter THEN
StringEqualsAtStartWithDelimiter := FALSE;
END_IF;
以上功能的实现依靠指针方法,对比字符串长度理论上没有限制。
页:
[1]