在Dll中,关于String和PChar的乱码问题。 ( 积分: 50 )

  • 主题发起人 主题发起人 Gingerzy
  • 开始时间 开始时间
G

Gingerzy

Unregistered / Unconfirmed
GUEST, unregistred user!
我做一Dll测试。
在Dll中代码如下:
procedure s_Msg(pc_Info: PChar);
begin
Application.MessageBox(pc_Info,'提示',mb_OK);
end;
exports
s_Msg;


在主程序中调用如下:
procedure s_Msg(pc_Info: PChar)
stdcall;external 'Test.dll'

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
s_Msg(PChar('张三和李四'));
end;


但在弹出对话框中显示出来的是乱码。

谢谢
 
我做一Dll测试。
在Dll中代码如下:
procedure s_Msg(pc_Info: PChar);
begin
Application.MessageBox(pc_Info,'提示',mb_OK);
end;
exports
s_Msg;


在主程序中调用如下:
procedure s_Msg(pc_Info: PChar)
stdcall;external 'Test.dll'

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
s_Msg(PChar('张三和李四'));
end;


但在弹出对话框中显示出来的是乱码。

谢谢
 
在DLL的和主程序的 dpr 文件的第一个里加入

uses
ShareMem,

试试看
 
Application.MessageBox(string(pc_Info),'提示',mb_OK);
 
s_Msg(PChar('张三和李四'));

直接用
s_Msg('张三和李四');
就行了

在这例子中,编译器自动会将串常量处理成PCHAR型的。
你这里是多此一举
 
多人接受答案了。
 
后退
顶部