CODESYS开发教程13-长字符串处理

摘要:这是一篇写给新手的关于CODESYS开发环境的小白教程,一看就懂......

在以前的《CODESYS开发教程7-字符串及其基本操作》教程中,介绍了字符串及其基本操作,有朋友看了以后觉得不过瘾,希望有一些关于字符串的更加深入的介绍。今天的教程重点给大家讲解一下长字符串操作的库及相关函数,还有长字符串(长度>255)处理相关的一些骚操作,比如自己写的字符串长度函数、字符串中查找字符的函数等。

一、关于STRING类型的说明

CODESYS的STRING字符串类型有几点重要的规则需要给大家介绍一下。

1.字符串存储

字符串实际上是一个字符数组。比如定义一个字符串并赋值。

str   : STRING:=’CODESYS’;

str实际上是一个长度为7的字符数组,可以使用数组的方式来访问。也就是说,可以通过str[0]来获得字符串的首字符’C’。在实际存储中,字符是采用ASCII码的形式来保存的。在判断str[0]是否为字符C时,需要跟字符C的ASCII码来进行比较,即str[0]=16#43 或 str[0]=67 会输出TRUE。但是使用str[0]=‘C’则会报编译错误。

在CODESYS中没有字符变量,但是可以用BYTE来定义字符,比如16#4A为字母J。

2.字符串大小

在定义字符串类型的变量时,如果不指定字符串的长度,字符串变量允许的最多字符数为80。

str   : STRING:=’CODESYS’; //此时str实际为最大长度80个字符的数组str[0..79]

字符串变量实际需要的内存为字符串的长度加一个字节,即上面定义的str变量所占存储空间为81个字节(SIZEOF(str)=81)。

3.长字符串

CODESYS环境没有限制字符串变量类型的长度,因此长度超过255的字符串也是合法的(C语言的字符串最大长度为255)。例如可以定义个长度为1000字节的字符串:

str1 : STRING(1000);

需要注意的是,在《字符串及其基本操作》中介绍的字符串处理函数处理的字符数不能超过255,即只能对STRING(255)类型的字符串进行操作。长度超过255字符的字符串可以通过数组读取的方式取出来单独处理。

受字符数限制的字符串处理函数主要包括:CONCAT、DELETE、FIND、INSERT、LEFT左选、LEN、MID、REPLACE、RIGHT。

测试程序如下:

结果如下图所示:

如上图中所示, 字符串类型变量str1的长度为3,所占内存空间大小是81字节。

对于长字符串strLong,其实际长度为10000。使用LEN()函数获取的长度为255,而使用函数StrLenA()获取的长度为正常的10000,所占内存空间大小为10001字节。

4.关于长字符串支持的最长度

测试发现,编译器(3.5.16)支持的长字符串最大尺寸为4294967295,即2^32-1。用仿真运行测试了一下我用的这个控制器(微秒P4CM),发现最多只能支持2147483647,即2^31-1,超过该长度编译能通过,但是下载运行时会报错,要么是控制器内存不足,要么是底层数据类型的长度限制导致的。

​PROGRAM main
VAR
       i             : INT;
       str1 : STRING;
       strLong   : STRING(10000);
       t0           : INT;
       t1           : UINT;
       t2           : INT;
       t3           : DINT;
       t4 &
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值