delphi string 参数问题

xphqzhj 2009-07-29 11:32:10
delphi写的dll文件函数如下:
function mfi_authen_syscard(sector:byte;key:string;sys_no:dword; sj_key:string):boolean;stdcall;
PB中声明如下:
Function Boolean mfi_authen_syscard(Long sector,string Key,ULong sys_no,string sj_key) Library "test.dll"
调用函数时如下:
lb_return = mfi_authen_syscard(3,"12345678",12345678,"11111111")
异常信息如下:
"0x0699c1aa" 指令引用的 "0x0000009c" 内存。该内存不能为 "written"。

新手大家帮帮忙!

...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myclife 2009-08-12
  • 打赏
  • 举报
回复
楼上是正解。

用PCHAR作为返回。

如果小于225个字节的可以用shortstring,但返回之前要处理下,因为shortstring没有null结束,第一个字节存放的是字符长度。

procedure FormatShortString(var s:ShortString);
var
li_len : integer;
begin
li_len := length(s);
move(s[1],s[0],li_len);
s[li_len] := #0;
end;
31737951 2009-08-11
  • 打赏
  • 举报
回复
delphi 中不能用 string 要用pchar
myclife 2009-07-31
  • 打赏
  • 举报
回复
用布尔型试试。
zhgwbzhd 2009-07-31
  • 打赏
  • 举报
回复
改一下 DLL吧。
jlwei888 2009-07-30
  • 打赏
  • 举报
回复
第一个是byte
PB10.5才有byte
xphqzhj 2009-07-30
  • 打赏
  • 举报
回复
byte 占一个字节。用char 也是不行的啊

680

社区成员

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

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