pb9获得当前程序所在路径及中文字符长度处理



pb9获得当前程序所在路径及中文字符长度处理

(2013-04-09 12:00:42)
String ls_Path, ls_Buffer = Space(255)
If Handle(GetApplication(), False) = 0 Then
    //开发模式运行
    ls_Path = GetCurrentDirectory()
Else
    //编译后运行
    If GetModuleFileName(Handle(GetApplication()),ls_Buffer,255) = 0 Then
        SetNull(ls_Buffer)
        ls_Path = ''
    Else
  ls_buffer = Trim( ls_Buffer )
        ls_Buffer = f_myLeft(ls_Buffer,LastPos(ls_Buffer,"\"))
        ls_Path = Trim( ls_Buffer )
    End If
End If
If ls_path <> '' And Right(ls_path, 1) <> '\' Then 
ls_path += '\'
end if
Return ls_Path

这里面有两个需要注意地方, ls_Buffer = Space(255) ,另外 f_myLeft是一个自定义函数,不直接用left的原因是pb9对Unicode的不支持,会把一个中文的长度当成1而不是2。下面是 f_myLeft函数内容:
char l_ch
int li_len
string ls_str
string ls_rtn
li_len = f_mylen(a_str)
if a_len>=li_len then return a_str
ls_str =a_str
li_len =1

do while li_len <= a_len and len(ls_str)>=li_len
    l_ch = mid(ls_str,li_len,1)    
    if asc(l_ch) >127 then
        ls_rtn = ls_rtn + mid(ls_str,li_len,2)    
        li_len +=2 
        a_len+=1
    else
        ls_rtn = ls_rtn + mid(ls_str,li_len,1)    
        li_len +=1
    end if    
loop
return ls_rtn
这个是 f_mylen函数内容:
char l_ch
int li_len,li_p
string ls_str

ls_str =a_str
li_p =1

do while len(ls_str)>=li_p
    l_ch = mid(ls_str,li_p,1)    
    if asc(l_ch) >127 then        
        li_p +=2          
    else        
        li_p +=1
    end if    
    li_len+=1
loop
return li_len
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值