Delphi调用C++写的DLL,参数是字符指针,Delphi中如何传参数?

arraiy 2010-10-19 04:28:23
C++中的原型声明:
调用语法:
int InitHandle (char * OutPutData)
参数描述:
char * OutPutData 传回初始化信息
返回值:成功,返回0,失败,返回-1。


Delphi里面应该怎么传参数进去呢?我用的下面的方法,可是当Showmessage的时候,总是报异常错误。正确的方法应该怎么调?谢谢大家!


unit Main_Unit;

interface

uses
ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, StrUtils, JNI, filectrl;

const
LibraryFile = 'SiInterface.Dll';

function Delphi_InitHandle: PChar;

function InitHandle(InPutData: PChar): integer; StdCall; External LibraryFile;

implementation

uses pub_Unit;

function Delphi_InitHandle: PChar;
var
S:PChar ;
i: integer;
resultS: string;
begin
resultS := '';
try
i := InitHandle(S);
resultS := String(S);
Showmessage(resultS);
Result := PChar(resultS);
except
on e: exception do
ShowMess(e.Message);
end;
end;

end.

...全文
465 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzhtwo 2010-10-19
  • 打赏
  • 举报
回复
GetMem(S,255);//加上这一句
i := InitHandle(S);
xisiyong 2010-10-19
  • 打赏
  • 举报
回复
function InitHandle(OutPutData: PChar): integer; cdecl; External LibraryFile;
liun_li 2010-10-19
  • 打赏
  • 举报
回复
楼主好像跟我碰到同样的问题了...
arraiy 2010-10-19
  • 打赏
  • 举报
回复
试过了上面两位的方法,还是不行
nm_wyh 2010-10-19
  • 打赏
  • 举报
回复
传递指针参数,实际上就是传递一个变量的地址。比如你这里定义的是S:Pchar,那么传递时应该是
i := InPutData(@S); //前面加一个@就可以了。
喝口水 2010-10-19
  • 打赏
  • 举报
回复
InPutData: PChar
改为
OutPutData:Pchar
应和dll中的一致
bdmh 2010-10-19
  • 打赏
  • 举报
回复
OutPutData:Pchar

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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