如何在DLL中返回字符串参数!

dyzhao889 2005-03-01 02:09:40
我在DLL中写了一个Procedure但是不知道如何返回一个字符串参数??
请高手们帮帮忙!
小弟先谢谢了!!!
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
楚人无衣 2005-03-01
  • 打赏
  • 举报
回复
可以啊:
dll:
...
procedure x(var s1,s2: PAnsiChar); stdcall
begin
s1 := PAnsiChar('Test1');
s2 := PAnsiChar('Test2');
end;

exports
x;
...
exe:
...
procedure x(var s1, s2: PAnsiChar); stdcall; external 's.dll';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s1, s2: PAnsiChar;
begin
x(s1, s2);
ShowMessage(StrPas(s1) + ' ' + StrPas(s2));
end;
...
dyzhao889 2005-03-01
  • 打赏
  • 举报
回复
不是的:
这样你会明白点:
procedure x(var s1,s2:pchar)
begin
s1:='Test1';
s2:='Test2';
end;
想返回两个值!
lylen 2005-03-01
  • 打赏
  • 举报
回复
我想搂主说的返回参数应该是返回值吧!你用过程procedure x(var str:pchar)是没有返回值得!你如果要用到返回值的话就应该定义成:function x(参数列表):PAnsiChar;stdcall 要用的话你就看赋值给谁了!怎么定义你应该知道得吧!
dyzhao889 2005-03-01
  • 打赏
  • 举报
回复
我想用
procedure x(var str:pchar);
可以返回参数吗??
楚人无衣 2005-03-01
  • 打赏
  • 举报
回复
用PAnsiChar代替string,如下所示:
dll中:function GetEnStr(const ACnStr: string): PAnsiChar; stdcall
exe中:leEnName.Text := StrPas(GetEnStr(leCnName.Text));
dyzhao889 2005-03-01
  • 打赏
  • 举报
回复
这样不行!
这样:
procedure x(var str:pchar)
begin
str:='Test';
end;
也不行!
SKYGUARDER 2005-03-01
  • 打赏
  • 举报
回复
procedure x(var str:string)
begin
...
end;
试试看。

16,748

社区成员

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

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