1.5 Codesys在超长字符串(大于255)判断一致的功能-CODESYS V3-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 2374|回复: 0

1.5 Codesys在超长字符串(大于255)判断一致的功能

[复制链接]

该用户从未签到

发表于 2023-9-22 22:13:57 | 显示全部楼层 |阅读模式
1、判断超长字符串1与超长字符串2完全一致。具体功能代码如下:
  1. FUNCTION StringEquals : BOOL
  2. VAR_INPUT
  3.         InString1 : STRING(1000);
  4.         InString2 : STRING(1000);
  5. END_VAR
  6. VAR       
  7.         pbyTemp1  : POINTER TO BYTE;
  8.         pbyTemp2  : POINTER TO BYTE;
  9. END_VAR
  10. //比较超长字符串1和超长字符串2全部一致
  11. StringEquals := TRUE;
  12. pbyTemp1 := ADR(InString1);
  13. pbyTemp2 := ADR(InString2);
  14. WHILE pbyTemp1^ <> 0 DO
  15.         IF pbyTemp1^ <> pbyTemp2^ THEN
  16.                 StringEquals := FALSE;
  17.                 EXIT;
  18.         END_IF;
  19.         pbyTemp1 := pbyTemp1 + 1;
  20.         pbyTemp2 := pbyTemp2 + 1;
  21. END_WHILE;
  22. IF pbyTemp2^ <> 0 THEN
  23.         StringEquals := FALSE;
  24. END_IF;
复制代码
2、判断超长字符串1与超长字符串2一致,但允许超长字符串2比字符串1长。具体功能代码如下:
  1. FUNCTION StringEqualsAtStart : BOOL
  2. VAR_INPUT
  3.         InString1 : STRING(1000);
  4.         InString2 : STRING(1000);
  5. END_VAR
  6. VAR
  7.         pbyTemp1  : POINTER TO BYTE;
  8.         pbyTemp2  : POINTER TO BYTE;
  9. END_VAR
  10. //比较超长字符串1和超长字符串2一致,超长字符串2可以长于超长字符串1
  11. StringEqualsAtStart := TRUE;
  12. pbyTemp1 := ADR(InString1);
  13. pbyTemp2 := ADR(InString2);
  14. WHILE pbyTemp1^ <> 0 DO
  15.         IF pbyTemp1^ <> pbyTemp2^ THEN
  16.                 StringEqualsAtStart := FALSE;
  17.                 EXIT;
  18.         END_IF;
  19.         pbyTemp1 := pbyTemp1 + 1;
  20.         pbyTemp2 := pbyTemp2 + 1;
  21. END_WHILE;
复制代码
2、判断超长字符串1与超长字符串2的前半部分一致,且超长字符串2有指定的分隔符。具体功能代码如下:
  1. FUNCTION StringEqualsAtStartWithDelimiter : BOOL
  2. VAR_INPUT
  3.         InString1   : STRING(1000);
  4.         InString2   : STRING(1000);
  5.         InDelimiter : BYTE;
  6. END_VAR
  7. VAR
  8.         pbyTemp1    : POINTER TO BYTE;
  9.         pbyTemp2    : POINTER TO BYTE;
  10. END_VAR
  11. //比较超长字符串1和超长字符串2一致,并且最后为指定的分隔符
  12. StringEqualsAtStartWithDelimiter := TRUE;
  13. pbyTemp1 := ADR(InString1);
  14. pbyTemp2 := ADR(InString2);
  15. WHILE pbyTemp1^ <> 0 AND pbyTemp2^<> 0 DO
  16.         IF pbyTemp1^ <>pbyTemp2^ THEN
  17.            StringEqualsAtStartWithDelimiter := FALSE;
  18.            EXIT;
  19.         END_IF;
  20.         pbyTemp1 := pbyTemp1 + 1;
  21.         pbyTemp2 := pbyTemp2 + 1;
  22. END_WHILE;
  23. IF pbyTemp2^ <> InDelimiter THEN
  24.         StringEqualsAtStartWithDelimiter := FALSE;
  25. END_IF;
复制代码
以上功能的实现依靠指针方法,对比字符串长度理论上没有限制。
+10
不赞一个?
打赏鼓励一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则


顶部qrcode底部
关注酷德网订阅号,获取更多资讯!

QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

GMT+8, 2026-10-8 07:29 , Processed in 0.162866 second(s), 43 queries .

酷德网

© 2001-2013 Hicodesys. 技术支持 by 酷德网

快速回复 返回顶部 返回列表