字符串函数 1. StringGet 语法 StringGet(read_data[start], device_ 函数名称 ,device_type, address_offset, data_count) 获取 PLC 的资料。字符串的数据类型为 字符数组, 是存储在 read_data[start]~read_data[start+data_count-1] 这 些 一 维 数 组 变 量 中 。 read_data必须为一维字符数组。 data_count是设定的读取字符的个数,可以是常数也可以是变量。 此处的 device_函数名称,即为在“系统参数” 中建立 PLC 类型时,设定的“PLC 名 称”。在此,PLC 名称被设定为 “FATEK FB Series”,如下图所示。 device_type是设备类型和 PLC 中数据的编码方式。例如:如果 device_type 是 LW_BIN,那么读取的设备类型为 LW,数据编码方式为 BIN。如果使用 BIN 编码方 式,“_BIN” 可以忽略。 如果 device_type 是 LW_BCD,表示设备类型 LW,数据的编码方式为 BCD 格式。 address_offset是 PLC 中的地址偏移量。 例如,StringGet(read_data_1[0],“FATEK FB Series”, RT, 5, 1) 代表读取的设备地 址偏移量为 5。 如果 address_offset 使用格式为 “N#AAAAA”,N 表示 PLC 的站号,AAAAA 表 示地址偏移量。此情况一般使用在同一个串口上连接有多台 PLC 或者控制器的情 况下。例如:StringGet(read_data_1”0”, “FATEK FBSeries”, RT, 2#5, 1) 表示读 取站号为 2 的 PLC 的数据。如果 StringGet()使用 “系统参数 / 设备列表” 中设定 的默认的站号,在此可以不填这个站号。 从 PLC 中读取的数据个数,由 data_count 的值来决定,因 read_data 变量仅接 受 char 数组类型。如下所示:
威纶通触摸屏宏指令字符串函数图1
read_data的类型 data_count 的值 读取16 位数据的个数 char(8-bit) 1 1 char(8-bit) 2 1 因为一个 WORD (16 位) 等于 2 个 ASCII 字符的长度,当设备类型长度为 WORD 时,根据上表,读取 2 个 ASCII 字符实际上是读 1 个 WORD 的数据。 例如: macro_commandmain() charstr1[20] // 读取 LW-0 ~ LW-9 共 10 个 WORD 到变数 str1[0] 到 str1[19] 中 // 因 1 WORD 可存放 2 个 ASCII 字符,欲读取 20 个 ASCII 字符 // 实际上共读取了 10 个WORD StringGet(str1[0],‚Local HMI‛, LW, 0, 20) endmacro_command 2. StringGetEx 语法 StringGetEx (read_data[start], device_ 函 数 名 称 , device_type,address_offset, data_count) 获取 PLC 的数据,不等待 PLC 响应,径自往下执行。 read_data、device_函数名称、device_type、address_offset 和 data_count 的说明 和 GetData 相同。 例如: macro_commandmain() charstr1[20] shorttest=0 // 当 MODBUS 设备未回应,test = 1将照常执行 StringGetEx(str1[0],"MODBUS RTU", 4x, 0, 20) test = 1 // 当 MODBUS 设备未响应,test = 2 将不会被执行,直到得到响应 StringGet(str1[0],"MODBUS RTU", 4x, 0, 20) test = 2 endmacro_command 3. StringSet 语法 StringSet (send_data[start], device_ 函数名称 ,device_type, address_offset, data_count) 将数据写到 PLC 中。字符串数据保存在 send_data[start]~send_data[start+data_count-1]中,send_data 必须为一维 字符数组类型。 data_count是写入到 PLC 中字符数据的个数,可以是常数也可以是变量。 device_函数名称详见上面的说明,在此不再说明。 device_type是设备类型和 PLC 中数据的编码方式。例如:如果 device_type 是 LW_BIN,那么读取的设备类型为 LW,数据编码方式为 BIN。如果使用 BIN 编码方 式,“_BIN” 可以忽略。 如果 device_type 是 LW_BCD,表示设备类型 LW,数据的编码方式为 BCD格式。 address_offset是 PLC 中的地址偏移量。 例如,StringSet(read_data_1[0],“FATEK FB Series”, RT, 5, 1) 代表读取的设备地 址偏移量为 5。 如果 address_offset 使用格式为 “N#AAAAA”, N 表示 PLC 的站号, AAAAA 表 示地址偏移量。此情况一般使用在同一个串行埠上连接有多台 PLC 或者控制器的情 况下。例如:StringSet(send_data_1[0],“FATEK FB Series”, RT, 2#5, 1) 表示设 定站号为 2 的 PLC 的数据。如果 StringSet() 使用 “系统参数 / 设备列表” 中设 定的默认的站号,在此可以不填这个站号。 设定到 PLC 的资料个数,根据 data_count 的值来决定,因 send_data 变量仅接 受 char 数组类型。如下所示: sead_data的类型 data_count 的值 设定 16 位数据的个数 char(8-bit) 1 1 char(8-bit) 2 1 因为一个 WORD (16 位) 等于 2 个 ASCII 字符的长度,当设备类型长度为 WORD 时,根据上表,写入 2 个 ASCII 字符实际上是写 1 个 WORD 的数据。宏指令会 以先写 low byte 再写 hight byte 的顺序,依序将 ASCII 字符写入。 使用 “字符显示” 元件显示数据时,data_count 必须填入 2 的倍数才能正确显示。 如:macro_commandmain() charsrc1[10]="abcde" StringSet(src1[0],"Local HMI", LW, 0, 5) endmacro_command 当 data_count 为一个大于或等于字符串长度的偶数时,可以完整显示整个字符串: macro_commandmain() charsrc1[10]="abcde" StringSet(src1[0],"Local HMI", LW, 0, 6) endmacro_command 例如: macro_commandmain() charstr1[10]= ‚abcde‛ // 字符串 str1 写入 LW-0 ~ LW-2 共三个 WORD // 即使 data_count 为 10,写到第 3 个 WORD 时发现字符串已结束, // 便不再写入后面的数据 StringSet(str1[0],"Local HMI", LW, 0, 10) end macro_command 4. StringSetEx 函数名称 StringSetEx 语法 StringSetEx(send_data[start], device_ 函数名称 ,device_type, address_offset, data_count) 将数据写到 PLC 中,不等待 PLC 回应,径自往下执行。 send_data、device_函数名称、device_type、address_offset 和 data_count的说明 和 StringSet 相同。 例如: macro_commandmain() charstr1[20]= ‚abcde‛ shorttest=0 // 当 MODBUS 设备未回应,test = 1 将照常执行 StringSetEx(str1[0],"MODBUS RTU", 4x, 0, 20) test = 1 // 当 MODBUS 设备未响应,test = 2 将不会被执行,直到得到响应 StringSet(str1[0],"MODBUS RTU", 4x, 0, 20) test = 2 endmacro_command 5. StringCopy 语法 success = StringCopy ([source],destination[start]) 或 success= StringCopy (source[start], destination[start]) 利用此函数进行字符串的复制。此函数可以将传入的静态字符串 (以双引号‛‛ 括起来的字符串),或是存放在字符数组中的字符串复制到目的 buffer。 来源字符串 sourc e可以为静态字符串 (如 ‚source‛ )或是一维字符数组变量 (如source[start])。 Destination[start] 必须为一维字符数组变量。 复制完毕会回传一 bool 类型的值给 success 字段。当复制成功,success等于 true,否则等于 false。当来源字符串的长度大于目的 buffer 的大小时,将不做任 何处理,并回传 false 到 success 字段。 success 字段可写可不写。 例如: macro_commandmain() charsrc1[5] = "abcde" chardest1[5] boolsuccess1 success1= StringCopy(src1[0], dest1[0]) //success1=true,dest1为 ‚abcde‛ chardest2[5] boolsuccess2 success2= StringCopy("12345", dest2[0]) //success2 = true,dest2为 ‚12345‛ charsrc3[10] = "abcdefghij" chardest3[5] boolsuccess3 success3= StringCopy(src3[0], dest3[0]) //success3 = false,dest3内容不变 charsrc4[10] = "abcdefghij" chardest4[5] boolsuccess4 success4= StringCopy(src4[5], dest4[0]) //success4=true,dest4为 ‚fghij‛ endmacro_command 6. StringDecAsc2Bin success= StringDecAsc2Bin(source[start], destination) 或 success = StringDecAsc2Bin(‚source‛,destination) 此函数将十进制字符串转换成整数。 来源字符串 source 可以为静态字符串 (如 ‚source‛ )或是一维字符数组变量 (如source[start])。 destination 必须为一变量,用以存放转换后的整数值。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 来源字符串必需为十进制字符串,若其包含 ‘0’ ~ ‘9’ 以外的字符,函数将 会回传false。 success 字段可写可不写。 例如: macro_commandmain() charsrc1[5] = "12345" intresult1 boolsuccess1 success1= StringDecAsc2Bin(src1[0], result1) //success1 = true,result1 为 ‚12345‛ charresult2 boolsuccess2 success2= StringDecAsc2Bin("32768", result2) //success2 = true,但结果超出 result2 所能表达的范围 charsrc3[2] = "4b" charresult3 boolsuccess3 success3= StringDecAsc2Bin (src3[0], result3) //success3 = false,因 src3 包含 ‘0’ ~ ‘9’ 以外的字符 endmacro_command 7. StringBin2DecAsc 语法 success = StringBin2DecAsc (source,destination[start]) 此函数将整数转换成十进制字符串。 来源 source 可以为常数或变量。 destination‛start‛ 必须为一维字符数组变量,用以存放转换后的十进制字符串。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 若转换后的十进制字符串长度大于目标数组的大小,函数将会回传 false。 success 字段可写可不写。 例如: macro_commandmain() int src1= 2147483647 chardest1[20] boolsuccess1 success1= StringBin2DecAsc(src1, dest1[0]) //success1 = true,dest1为 ‚2147483647‛ shortsrc2 = 0x3c chardest2[20] boolsuccess2 success2= StringBin2DecAsc(src2, dest2[0]) //success2 = true,dest2为 ‚60‛ int src3= 2147483647 chardest3[5] boolsuccess3 success3= StringBin2DecAsc(src3, dest3[0]) //success3 = false,dest3 内容不变 endmacro_command 8. StringDecAsc2Float 语法 success = StringDecAsc2Float (source[start],destination) 或 success =StringDecAsc2Float (‚source‛, destination) 此函数将十进制字符串转换成浮点数。 来源字符串 source 可以为静态字符串 (如 ‚source‛ )或是一维字符数组变量 (如 source[start] )。 destination 必须为一变量,用以存放转换后的浮点数值。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 来源字符串必需为十进制字符串,若其包含 ‘0’ ~ ‘9’ 或 ‘.’ 以外的字符, 函数将会回传 false。 success 字段可写可不写。 macro_commandmain() charsrc1[10] = "12.345" floatresult1 boolsuccess1 success1= StringDecAsc2Float(src1[0], result1) //success1 = true,result1 为 ‚12.345‛ floatresult2 boolsuccess2 success2= StringDecAsc2Float("1.234567890", result2) //success2 = true,但结果超出 result2 所能表达的范围,可能丧失精确度 charsrc3[2] = "4b" floatresult3 boolsuccess3 success3= StringDecAsc2Float(src3[0], result3) //success3 = false,因 src3 包含 ‘0’ ~ ‘9’或 ‘.’ 以外的字符 endmacro_command 9. StringFloat2DecAsc 语法 success = StringFloat2DecAsc(source,destination[start]) 此函数将浮点数转换成十进制字符串。 来源 source 可以为常数或变量。 Destination[start] 必须为一维字符数组变量,用以存放转换后的十进制字符串。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 若转换后的十进制字符串长度大于目标数组的大小,函数将会回传 false。 success 字段可写可不写。 例如: macro_command main() float src1 = 1.2345 char dest1[20] bool success1 success1 = StringFloat2DecAsc(src1, dest1[0]) // success1 = true,dest1为 ‚1.2345‛ float src2 = 1.23456789 char dest2 [20] bool success2 success2 = StringFloat2DecAsc(src2, dest2 [0]) // success2 = true,但可能丧失精确度 float src3 = 1.2345 char dest3[5] bool success3 success3 = StringFloat2DecAsc(src3, dest3 [0]) // success3 = false,dest3 内容不变 end macro_command 10. StringHexAsc2Bin 语法 success = StringHexAsc2Bin (source[start],destination) 或 success =StringHexAsc2Bin (‚source‛, destination) 此函数将十六进制字符串转换成整数。 来源字符串 source 可以为静态字符串 (如 ‚source‛ )或是一维字符数组变量 (如 source‛start‛)。 destination 必须为一变量,用以存放转换后的整数值。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 来源字符串必需为十六进制字符串,若其包含 ‘0’ ~ ‘9’ 或 ‘a’ ~ ‘f’ 或 ‘A’ ~ ‘F’ 以外的字符,函数将会回传 false。 success 字段可写可不写。 例如: macro_command main() char src1[5]="0x3c" int result1 bool success1 success1 = StringHexAsc2Bin(src1[0], result1) // success1 = true,result1 为 3c short result2 bool success2 success2 = StringDecAsc2Bin("1a2b3c4d", result2) // success2 = true,但结果超出 result2 所能表达的范围,result2 =3c4d char src3[2] = "4g" char result3 bool success3 success3 = StringDecAsc2Bin (src3[0], result3) // success3=false,因 src3包含 ‘0’ ~ ‘9’ 或 ‘a’ ~ ‘f’ 或 ‘A’ ~ ‘F’ 以外的字符 end macro_command 11. StringBin2HexAsc 语法 success = StringBin2HexAsc (source,destination[start]) 此函数将整数转换成十六进制字符串。 来源source可以为常数或变量。 Destination[start] 必须为一维字符数组变量,用以存放转换后的十六进制字符串。 执行完毕会回传一 bool 类型的值给 success 字段。当转换成功,success等于 true,否则等于 false。 若转换后的十六进制字符串长度大于目标数组的大小,函数将会回传 false。 success 字段可写可不写。 例如: macro_commandmain() int src1= 20 chardest1[20] boolsuccess1 success1= StringBin2HexAsc(src1, dest1[0]) //success1 = true,dest1 为 ‚14‛ shortsrc2 = 0x3c chardest2[20] bool success2 success2= StringBin2HexAsc(src2, dest2[0]) //success2 = true,dest2 为 ‚3c‛ int src3= 0x1a2b3c4d chardest3[6] boolsuccess3 success3= StringBin2HexAsc(src3, dest3[0]) //success3 = false,dest3 内容不变 endmacro_command 12. StringMid 语法 success = StringMid (source[start], count,destination[start]) 或 success = StringMid(‚string‛, start, count, destination[start]) 利用此函数可将一个字符串中的某一段子字符串提取出来。 来源字符串 source 可以为静态字符串 (如 ‚source‛)或是一维字符数组变量 (如 source[start])。当来源字符串为字符数组变量时,由数组下标决定子字符串起 始位置。当来源字符串为静态字符串时,由第二个参数 start 决定子字符串起始 位置。 count 决定要提取的子字符串长度。 Destination[start] 必须为一维字符数组变量,用以存放提取出来的子字符串。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。 若提取出来的子字符串长度大于目标数组的大小,函数将会回传false。 success 字段可写可不写。 例如: macro_commandmain() charsrc1[20] = "abcdefghijklmnopqrst" chardest1[20] boolsuccess1 success1= StringMid(src1[5], 6, dest1[0]) //success1 = true,dest1 为 ‚fghijk‛ charsrc2[20] = "abcdefghijklmnopqrst" chardest2[5] boolsuccess2 success2= StringMid(src2[5], 6, dest2[0]) //success2 = false,dest2 内容不变 chardest3[20] = "12345678901234567890" boolsuccess3 success3= StringMid("abcdefghijklmnopqrst", 5, 5, dest3[15]) //success3 = true,dest3 = ‚123456789012345fghij‛ endmacro_command 13. StringLength length =StringLength (source[start]) 或 length =StringLength ([source]) 取得字符串的长度。 来源字符串 source 可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 函数回传值代表来源字符串的长度。 例如: macro_commandmain() charsrc1[20] = "abcde" intlength1 length1=StringLength(src1[0]) //length1 = 5 charsrc2[20] = { 'a', 'b' , 'c' , 'd' , 'e' } intlength2 length2=StringLength(src2[0]) //length2 = 20 charsrc3[20] = "abcdefghij" intlength3 length3= StringLength(src3 [2]) //length3 = 8 end macro_command 14. StringCat 语法 success = StringCat (source[start],destination[start]) 或 success = StringCat(‚source‛, destination[start]) 利用此函数将来源字符串衔接于目标字符串之后。此函数执行成功后,目标字符 串将等于两字符串衔接后的结果。 来源字符串source可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如source[start])。 Destination[start]必须为一维字符数组变量。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当两字符串衔接后的长度超过目标数组的长度时,目标字 符串将保留衔接以前的内容,不做任何改变,并回传 false。 例如:macro_commandmain() charsrc1[20] = "abcdefghij" chardest1[20] = "1234567890" boolsuccess1 success1=StringCat(src1[0], dest1[0]) //success1 = true,dest1 = "123456790abcdefghij" chardest2 [10] = "1234567890" boolsuccess2 success2=StringCat("abcde", dest2 ‚0‛) //success2 = false,dest2 内容不变 charsrc3[20] = "abcdefghij" chardest3[20] boolsuccess3 success3= StringCat(src3[0], dest3[15]) //success3 = false,dest3内容不变 endmacro_command 15. StringCompare 语法 ret = StringCompare (str1[start],str2[start]) ret =StringCompare (‚string1‛, str2[start]) ret =StringCompare (str1[start], ‚string2‛) ret =StringCompare (‚string1‛, ‚string2‛) 比较两字符串的内容是否相等。此函数将大小写视为不同。 两个传入的字符串皆可以为静态字符串 (如 ‚source‛)或是一维字符数组变量 (如 source[start])。 执行完毕会回传一 bool类型的值给 ret 字段。若两字符串相等,ret 为 true,否 则为 false。 例如: macro_commandmain() chara1[20] = "abcde" charb1[20] = "ABCDE" boolret1 ret1 =StringCompare(a1[0], b1[0]) // ret1= false chara2[20] = "abcde" charb2[20] = "abcde" boolret2 ret2 =StringCompare(a2[0], b2[0]) // ret2= true char a3[20] = "abcde" charb3[20] = "abcdefg" boolret3 ret3 =StringCompare(a3‛0‛, b3‛0‛) // ret3= false endmacro_command 16. StringCompareNoCase 语法 ret = StringCompareNoCase(str1[start],str2[start]) ret =StringCompareNoCase(‚string1‛, str2[start]) ret =StringCompareNoCase(str1[start], ‚string2‛) ret =StringCompareNoCase(‚string1‛, ‚string2‛) 比较两字符串的内容是否相等。此函数将大小写视为相同。 两个传入的字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 ret 字段。若两字符串相等,ret 为 true, 否则为 false。 例如: macro_commandmain() chara1[20] = "abcde" charb1[20] = "ABCDE" boolret1 ret1 =StringCompareNoCase(a1[0], b1[0]) // ret1= true chara2[20] = "abcde" charb2[20] = "abcde" boolret2 ret2 =StringCompareNoCase(a2[0], b2[0]) // ret2= true char a3[20] = "abcde" charb3[20] = "abcdefg" boolret3 ret3 =StringCompareNoCase(a3[0], b3[0]) // ret3= false endmacro_command 17. StringFind 语法 position = StringFind (source[start],target[start]) position= StringFind (‚source‛, target[start]) position= StringFind (source[start], ‚target‛) position= StringFind (‚source‛, ‚target‛) 寻找某一字符串 (target) 在另一个字符串 (source) 里第一次出现的位置。 两个传入的字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传target字符串在 source 字符串里出现的位置。Source 字符串由 0 开始递增为字符编索引值。若 source 字符串存在一个子字符串,其所包含的字符 与排列顺序跟 target 字符串完全相等,则函数会回传此子字符串开头的索引值, 若没有找到,则回传 -1。 例如: macro_commandmain() charsrc1[20] = "abcde" chartarget1[20] = "cd" short pos1 pos1 =StringFind(src1[0], target1[0]) // pos1= 2 chartarget2[20] = "ce" shortpos2 pos2 =StringFind( "abcde", target2‛0‛) // pos2= -1 charsrc3[20] = "abcde" shortpos3 pos3 =StringFind(src3[3], "cd") // pos3= -1 endmacro_command 18. StringReverseFind 语法 position = StringReverseFind (source[start],target[start]) position= StringReverseFind (‚source‛, target[start]) position= StringReverseFind (source[start], ‚target‛) position= StringReverseFind (‚source‛, ‚target‚) 寻找某一字符串 (target) 在另一个字符串 (source) 里最后一次出现的位置。 两个传入的字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传 target 字符串在 source 字符串里最后一次出现的位置。source 字符串由 0 开始递增为字符编索引值。若 source 字符串存在一个子字符串,其 所包含的字符与排列顺序跟 target 字符串完全相等,则函数会回传此子字符串开 头的索引值,若没有找到,则回传 -1。若 source 字符串中存在多个与 target字 符串相等的子字符串,则回传最后一个出现的子字符串的位置。 例如: macro_commandmain() charsrc1[20] = "abcdeabcde" chartarget1[20] = "cd" shortpos1 pos1 =StringReverseFind(src1[0], target1[0]) // pos1= 7 chartarget2[20] = "ce" shortpos2 pos2 =StringReverseFind( "abcdeabcde" , target2[0]) // pos2= -1 charsrc3[20] = "abcdeabcde" shortpos3 pos3 =StringReverseFind(src3[6], "ab") // pos3= -1 endmacro_command 9.StringFindOneOf 语法 position = StringFindOneOf (source[start],target[start]) position= StringFindOneOf (‚source‛, target[start]) position= StringFindOneOf (source[start], ‚target‛) position= StringFindOneOf (‚source‛, ‚target‛) 寻找 target 字符串中任一个字符在 source 字符串中第一次出现的位置。 两个传入的字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传 target 字符串中任一个字符在 source 字符串里第一次出现的位 置,即 source 字符串中为该字符编的索引值 (由 0 开始)。若没有找到,则回传 -1。 例如: macro_commandmain() charsrc1[20] = "abcdeabcde" chartarget1[20] = "sdf" shortpos1 pos1 =StringFindOneOf(src1[0], target1[0]) // pos1= 3 charsrc2[20] = "abcdeabcde" shortpos2 pos2 =StringFindOneOf(src2[1], "agi") // pos2= 4 chartarget3 [20] = "bus" shortpos3 pos3 =StringFindOneOf("abcdeabcde", target3[1]) // pos3= -1 endmacro_command 19. StringIncluding 语法 success = StringIncluding (source[start],set[start], destination[start]) success= StringIncluding (‚source‛, set[start], destination[start]) success= StringIncluding (source[start], ‚set‛, destination[start]) success= StringIncluding (‚source‛, ‚set‛, destination[start]) 提取 source 字符串中某个以索引值 0 的字符 (第一个字符) 开头的子字符串, 而且此子字符串的每个字符都能在 set 字符串中找到相同的字符。此函数将会从 source 字符串的第一个字符开始寻找,直到找到不存在于 set 字符串中的字符为 止。 source 字符串与 set 字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符 数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当提取出来的字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "cabbageabc" charset1[20] = "abc" chardest1[20] boolsuccess1 success1= StringIncluding(src1[0], set1[0], dest1[0]) // success1= true,dest1 = “cabba” charsrc2[20] = "gecabba" chardest2[20] boolsuccess2 success2= StringIncluding(src2[0], "abc", dest2[0]) //success2 = true,dest2 = ‚ “” charset3[20] = "abc" chardest3[4] boolsuccess3 success3= StringIncluding("cabbage", set3[0], dest3[0]) //success3 = false,dest3内容不变 endmacro_command 20. StringExcluding 语法 success = StringExcluding (source[start],set[start], destination[start]) success= StringExcluding (‚source‛, set[start], destination[start]) success= StringExcluding (source[start], ‚set‛, destination[start]) success= StringExcluding (‚source‛, ‚set‛, destination[start]) 提取 source 字符串中某个以索引值 0 的字符 (第一个字符) 开头的子字符串, 而且此子字符串的每个字符必不存在于set字符串中。此函数将会从 source字符串 的第一个字符开始寻找,直到找到存在于 set 字符串中的字符为止。 source 字符串与 set 字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符 数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当提取出来的字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "cabbageabc" charset1[20] = "ge" chardest1[20] boolsuccess1 success1= StringExcluding(src1[0], set1[0], dest1[0]) //success1 = true,dest1 = "cabba" charsrc2[20] = "cabbage" chardest2[20] boolsuccess2 success2= StringExcluding(src2[0], "abc", dest2[0]) //success2 = true,dest2 =" " charset3[20] = "ge" chardest3[4] boolsuccess3 success3= StringExcluding("cabbage", set3[0], dest3[0]) //success3 = false,dest3 内容不变 endmacro_command 21. StringToUpper 语法 success = StringToUpper (source[start],destination[start]) success= StringToUpper (‚source‛, destination[start]) 将 source 字符串的字符全部转换成大写,并写入 destination 字符串。 source 字符串可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。source 字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "aBcDe" chardest1[20] boolsuccess1 success1= StringToUpper(src1[0], dest1[0]) //success1 = true,dest1 = ‚ABCDE‛ char dest2[4] boolsuccess2 success2= StringToUpper("aBcDe", dest2[0]) //success2 = false,dest2 内容不变 endmacro_command 22. StringToLower 语法 success = StringToLower (source[start],destination[start]) success= StringToLower (‚source‛, destination[start]) 将 source 字符串的字符全部转换成小写,并写入 destination 字符串。 source 字符串可以为静态字符串 (如 ‚source‛)或是一维字符数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。source 字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "aBcDe" chardest1[20] boolsuccess1 success1= StringToUpper(src1[0], dest1[0]) //success1 = true,dest1 = ‚abcde‛ chardest2[4] boolsuccess2 success2= StringToUpper("aBcDe", dest2[0]) //success2 = false,dest2 内容不变 endmacro_command 23. StringToReverse 语法 success = StringToReverse (source[start],destination[start]) success= StringToReverse (‚source‛, destination[start]) 例如: 将 source 字符串反转,并写入 destination 字符串。 source 字符串可以为静态字符串 (如 ‚source‛) 或是一维字符数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。source 字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "abcde" chardest1[20] boolsuccess1 success1= StringToUpper(src1[0], dest1[0]) //success1 = true,dest1 = “edcba” chardest2[4] boolsuccess2 success2= StringToUpper("abcde", dest2[0]) //success2 = false,dest2 内容不变 endmacro_command 24. StringTrimLeft 语法 success = StringTrimLeft (source[start],set[start], destination[start]) success= StringTrimLeft (‚source‛, set[start], destination[start]) success= StringTrimLeft (source[start], ‚set‛, destination[start]) success= StringTrimLeft (‚source‛, ‚set‛, destination[start]) 从 source 字符串的第一个字符开始往后寻找,若找到与 set 字符串相同的字符 便裁剪掉该字符,直到遇到不存在于 set 字符串中的字符为止。 source 字符串与 set 字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符 数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当裁剪完后的字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "# *a*#bc" charset1[20] = "# *" chardest1[20] boolsuccess1 success1= StringTrimLeft (src1[0], set1[0], dest1[0]) //success1 = true,dest1 = "a*#bc" charset2[20] = {'#', ' ', '*'} chardest2[4] success2= StringTrimLeft ("# *a*#bc", set2[0], dest2[0]) //success2 = false,dest2 内容不变 charsrc3[20] = "abc *#" chardest3[20] boolsuccess3 success3= StringTrimLeft (src3[0], "# *", dest3[0]) //success3 = true,dest3 = "abc *#" endmacro_command 25. StringTrimRight 语法 success = StringTrimRight (source[start],set[start], destination[start]) success= StringTrimRight (‚source‛, set[start], destination[start]) success= StringTrimRight (source[start], ‚set‛, destination[start]) success= StringTrimRight (‚source‛, ‚set‛, destination[start]) 从 source 字符串的最后一个字符开始往前寻找,若找到与 set 字符串相同的字 符便裁剪掉该字符,直到遇到不存在于 set 字符串中的字符为止。 source 字符串与 set 字符串皆可以为静态字符串 (如 ‚source‛) 或是一维字符 数组变量 (如 source[start])。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当裁剪完后的字符串长度大于目标数组的大小,将会回传 false。 例如: macro_commandmain() charsrc1[20] = "# *a*#bc# * " charset1[20] = "# *" chardest1[20] boolsuccess1 success1= StringTrimRight(src1[0], set1[0], dest1[0]) //success1 = true,dest1= ‚# *a*#bc‛ charset2[20] = {'#', ' ', '*'} chardest2[20] success2= StringTrimRight("# *a*#bc", set2[0], dest2[0]) //success2 = true,dest2 = ‚# *a*#bc‛ charsrc3[20] = "ab**c *#" chardest3[4] boolsuccess3 success3= StringTrimRight(src3[0], "# *", dest3[0]) //success3 = false,dest3 内容不变 endmacro_command 26. StringInsert 语法 success = StringInsert (pos, insert[start],destination[start]) success= StringInsert (pos, ‚insert‛, destination[start]) success= StringInsert (pos, insert[start], length, destination[start]) success= StringInsert (pos, ‚insert‛, length, destination[start]) 将 insert 字符串插入到目标字符串中的特定位置,插入位置由 pos 所指定。 Insert 字符串可以为静态字符串 (如 ‚insert‛) 或是一维字符数组变量 (如 insert[start])。 用户亦可以在 length 字段指定 insert 字符串的长度。 执行完毕会回传一 bool 类型的值给 success 字段。当执行成功,success等于 true,否则等于 false。当插入完成后的字符串长度大于目标数组的大小,将会回 传 false。 例如: macro_commandmain() charstr1[20] = "but the question is" charstr2[10] = ", that is" chardest[40] = "to be or not to be" boolsuccess success= StringInsert(18, str1[3], 13, dest[0]) //success = true, dest = "to be or not to be the question" success= StringInsert(18, str2[0], dest[0]) //success=true, dest="to be or not to be, that is the question" success= StringInsert(0, "Hamlet:", dest[0]) //success = false, dest 内容不变 endmacro_command
|