关于PChar中存在#0 的问题

bluepph 2019-01-12 09:02:04
#0一般做为结束符,但是最近要调用一个C的动态库。传的值中间就存在#0。估计是这个原因导致调用动态库一直报错。
大家遇到这个问题一般如何解决的?
...全文
791 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
虎子8 2019-01-29
  • 打赏
  • 举报
回复
换个类型或者 继续用pchar把内容base64一下
sazhufa 2019-01-14
  • 打赏
  • 举报
回复
一定要先搞清楚动态库如何使用传入参数。
如果只有一个单纯的字符指针参数, 那么遇到#0就中止很正常。

解决方法是: 先确定dll导出函数的定义,然后review代码看看有没有调用问题(参数个数、类型、顺序 三个方面)
doloopcn 2019-01-13
  • 打赏
  • 举报
回复
应该是你的调用方法有问题

DELPHI调用C一般都可能通过BUFF,你的程序在读BUFF的时候读的字节数不对,就有可能把#0读进来了

试试通过String数组解决:
var S:AnsiString;
...
Result:='';
for i:=1 to Length(S) do
begin
if Ord(S[i])<>0 then
Result:=Result+S[i]
else
Break;
end;
  • 打赏
  • 举报
回复
只能说你的参数传入就是有问题的...
BlueStorm 2019-01-12
  • 打赏
  • 举报
回复
可以改为传指针,例如: @str[1]

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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