蓝色港湾 发表于 2023-9-22 22:13:57

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]
查看完整版本: 1.5 Codesys在超长字符串(大于255)判断一致的功能