首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

请教这个函数怎么写

2013-09-14 
请问这个函数如何写string ls_databuffe入参ls_databuffer12^3|邓廷兰|女|30岁|^00^我想做一个函数输入

请问这个函数如何写
string ls_databuffe
入参
ls_databuffer="12^3|邓廷兰|女|30岁|^00^"

我想做一个函数
输入以上参数后 返回一个数组
a[1]=3
a[2]=邓廷兰
a[3]=女
a[4]=30岁
当然入参是不固定的
也有可能有多个“|”
如 ls_databuffer="12^3|邓廷兰|女|30岁|党员|中国|^00^"等 
请问这个函数如何写?
[解决办法]
大至就是这样了:
复制下面的文本到一个 .txt 文件再将其更名为 of_getsarray.srf ,再导入至某PBL 成全局函数即可。


$PBExportHeader$of_getsarray.srf
global type of_getsarray from function_object
end type

forward prototypes
global function integer of_getsarray (string ls_databuffer, ref string ls_data[])
end prototypes

global function integer of_getsarray (string ls_databuffer, ref string ls_data[]);
//====================================================================
// 参数:
// value    stringls_databuffer
// referencestringls_data[]    
//--------------------------------
// 返回: integer, 即 ls_data[] 数组元数
//--------------------------------
// 2013年09月12日 描述: 解析 ls_databuffer="12^3
[解决办法]
邓廷兰
[解决办法]

[解决办法]
30岁
[解决办法]
党员
[解决办法]
中国
[解决办法]
^00^"
//到 ls_data[] 数组 成 ls_data[1]='3', ls_data[2]='邓廷兰', ls_data[3] = '女', ls_data[4] = '30岁', ls_data[5] = '党员' ......
//
//--------------------------------
// 修改历史:
//
//====================================================================


integer li_Ret = 0
int li_b, li_e


string ls_tmp

if isnull(ls_databuffer) then ls_databuffer = ''

ls_tmp = trim(ls_databuffer) 
li_b = pos(ls_tmp, '^')

if li_b <= 0 then goto lb_Ret

ls_tmp = mid(ls_tmp, li_b + 1)
li_e = pos(ls_tmp, '^')

if li_e <= 0 then 
li_e = len(ls_tmp)//当不存在第二个结束字符 ^ 时,则将结束位数放在最后一位(也就是扫描整个字符串),也可以返回0 直接写成 goto lb_Ret 即可
else
ls_tmp = mid(ls_tmp, 1, li_e - 1)
end if

li_b = pos(ls_tmp, '
[解决办法]
')

do while li_b > 0
ls_data[upperbound(ls_data) + 1] = left(ls_tmp, li_b - 1)

ls_tmp = mid(ls_tmp, li_b + 1)
li_b = pos(ls_tmp, '
[解决办法]
')
loop

if trim(ls_tmp) <> '
[解决办法]
' and trim(ls_tmp) <> '' then ls_data[upperbound(ls_data) + 1] = ls_tmp

li_Ret = upperbound(ls_data)

lb_Ret:

return li_Ret
end function

热点排行