获取双指针字符串的值

hanzhenyu 2016-10-21 11:54:58
调用一个外部com口设备的dll。比如说函数名read(字符串,数值); 其中 返回的字符,都是双指针。
如果只是普通的指针read(ref string,long);
现在双指针如果还用这个方法 取出的都是乱码。请教,如何获取双指针的字符串的值。
...全文
1638 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2016-10-24
  • 打赏
  • 举报
回复
是不是编译的问题,你这样试试 ls_temp = String(long, "address" ) lb_blob = blob(ls_temp) //EncodingUTF16LE! is default ls_result = string(lb_blob, EncodingANSI!) 如果还不行,就用别的语言做个dll吧,中转一下
hanzhenyu 2016-10-23
  • 打赏
  • 举报
回复
这个方法我也用过,但是的出来的始终是乱码,郁闷了啊。
WorldMobile 2016-10-22
  • 打赏
  • 举报
回复
参考这个试试

在调用外部dll中的函数时,经常会用到指针。那么在pb中如何实现呢?

先看一个dll说明文档中的函数声明:

Function GetFamInfo(info:pchar,out flag:integer):pchar;stdcall; // flag是一个出口参数 函数的返回值和第一个参数都是指针类型


pchar是delphi中的指针类型。那么我们在pb中应该怎么声明和调用呢?

首先在pb的declare global external functions中声明外部dll函数:

public function long GetFamInfo(long info, ref int flag) library "nccm_interface.dll" ALIAS FOR "GetFamInfo"


然后在工程中调用:

long rtn
int flag
long famInfo
rtn = GetFamInfo(famInfo, flag)
sle_1.Text = String(flag)
sle_2.Text = string(rtn, "address")


long类型在pb中可以作为指针类型,当long作为一个字符型指针时,可以用String(long,"address")这个方法,读出long指针地址真所保存的字符串,并付给一个字符型变量。



如果这个不行,估计用pb很难实现,建议你用delphi或者c之类的再写个中转的dll,通过这个中转dll去调那个双指针,在pb中调用你的中转dll就行了

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧