签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
//分割符
IF TypeOf(#RecSeparator)= TypeOf(#RecSeparator_S) THEN // 判断变量类型是否是字符串
VariantGet(SRC := #RecSeparator,
DST => #RecSeparator_S);//Variant 读出到字符串
ELSE
DST => #RecSeparator_a);//Variant 读出到字符
#RecSeparator_S := CHAR_TO_STRING(#RecSeparator_a);//字符转字符串
END_IF;
//结束符
IF TypeOf(#EndSeparator) = TypeOf(#EndSeparator_S) THEN// 判断变量类型是否是字符串
VariantGet(SRC := #EndSeparator,
DST => #EndSeparator_S);//Variant 读出到字符串
DST => #EndSeparator_a);//Variant 读出到字符
#EndSeparator_S := CHAR_TO_STRING(#EndSeparator_a);//字符转字符串
//要转换的字符串
IF TypeOf(#DestStruct) = TypeOf(#DestStruct_S) THEN// 判断变量类型是否是字符串
VariantGet(SRC := #DestStruct,
DST => #DestStruct_S);//Variant 读出到字符串
Chars_TO_Strg(Chars := #DestStruct,
pChars := 0,
Cnt := #Cnt,
Strg => #DestStruct_S);//Variant 读出字符转到字符串
//读出数据上限
#I_MAX:=UPPER_BOUND(ARR := #SrcArray, DIM := 1);
//循环把字符串分割到数组里的字符串
FOR #I := 0 TO #I_MAX DO
//读出第一个分割位置
#SEG_WZ := FIND(IN1 := #DestStruct_S, IN2 := #RecSeparator_S);
//第一个分割字符串写入第一个数组
#SrcArray[#I] := LEFT(IN := #DestStruct_S, L := #SEG_WZ - 1);
//删除第一个字符串与分割符
#DestStruct_S := DELETE(IN := #DestStruct_S, L := #SEG_WZ, P := 1);
//判断字符串里有没有分割符
IF #SEG_WZ = 0 THEN
//读出结束字符位置
#END_WZ := FIND(IN1 := #DestStruct_S, IN2 := #EndSeparator_S);
//写最后一个字符串到数组里
#SrcArray[#I] := LEFT(IN := #DestStruct_S, L := #END_WZ - 1);
//删除最一个字符串与结束字符
#DestStruct_S := DELETE(IN := #DestStruct_S, L := #END_WZ, P := 1);
//判断有没有分割字符与结束字符 如果没有结束循环
IF #SEG_WZ = 0 AND #END_WZ = 0 THEN
EXIT;
//记录分割数量
#Count := #I + 1;
END_FOR;
IF TypeOf(#RecSeparator)<> TypeOf(#RecSeparator_S) AND TypeOf(#RecSeparator)<>TypeOf(#RecSeparator_a) THEN
#SPLIT := 1;//分割字符数据类型无效
ELSIF TypeOf(#EndSeparator) <> TypeOf(#EndSeparator_S) AND TypeOf(#EndSeparator) <>TypeOf(#EndSeparator_a) THEN
#SPLIT := 2;//结束字符数据类型无效
ELSIF TypeOf(#DestStruct)<>TypeOf(#DestStruct_S) AND TypeOf(#DestStruct)<>TypeOf(#EndSeparator_a) THEN
#SPLIT := 3;//要侵害字符串数据类型无效
ELSIF #RecSeparator_S=' ' THEN
#SPLIT := 4;//分割字符不能为空
ELSIF #EndSeparator_S=' ' THEN
#SPLIT := 5;//结束字符不能为空
ELSIF #I_MAX<1 THEN
#SPLIT := 6;//待读取数组 SrcArray 过小
#SPLIT := 0;
参数
声明
数据类型
存储区
说明
RecSeparator
Input
Variant
I、Q、M、D、L
分隔符(CHAR OR STRING)
EndSeparator
定义完整字符串末尾的分隔符。(CHAR OR STRING)
SrcArray
InOut
Array of STRING
已转换字符串的结构
DestStruct
指向待读取数组的指针。(Array of CHAR OR STRING)
Cnt
UInt
DestStruct:数类型是字符数组;多少字符转字符串;0:是全部
Ret_Val
Return
Int
指令执行结果/错误代码(请参见“Ret_Val 参数”表格)
Count
Output
UDInt
找到的字符串数量。
下表列出了“SPLIT”指令的参数
参数 RET_VAL
错误代码*
(W#16#...)
0000
无错误。
0001
分割字符数据类型无效
0002
0003
源字符串无效。
0004
分割字符不能为空
0005
结束字符不能为空
0006
数组 SrcArray 过小
SPLIT.txt
SPLIT参数说明.docx
SPLIT.txt 改一下SCL
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1701593&b_id=50&s_id=0&num=10
感谢你的分享!
先给楼主赞一个,能问下一下这段程序是做什么用的吗?对SCL语言不是太懂
最后的文本不怎么好看了,不如直接贴图片了,既然附件提供下载
下载来试一试
是啊,感谢分享哦
赞,谢谢分享。
谢谢分享,学习。
感谢楼主分享!
先给楼主赞一个
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录