C++编写的DLL中其中有个这样的函数:
int test( unsigned char * pMsg, int * len);我在DELPHI里调用时写的对应原型是:
function test(pMsg:PChar; len:Integer):Integer; stdcall; far; external NAME_DLL name 'test';调用体如下:
procedure TForm1.Button3Click(Sender: TObject);
var
ret, mLen: Integer;
sMsg: array[1..193] of Char; //
// pName, pGender, pFolk, pBirthDay, pCode, pAddress, pAgency, pExpireStart, pExpireEnd: PChar;
begin
ret:=test(sMsg,0);
if ret <> 1 then
begin
ShowMessage('信息读取失败');
Exit;
end;
Memo1.Lines.Add(sMsg);
end;怎么MEMO1里显示的是乱码?
int test( unsigned char * pMsg, int * len);我在DELPHI里调用时写的对应原型是:
function test(pMsg:PChar; len:Integer):Integer; stdcall; far; external NAME_DLL name 'test';调用体如下:
procedure TForm1.Button3Click(Sender: TObject);
var
ret, mLen: Integer;
sMsg: array[1..193] of Char; //
// pName, pGender, pFolk, pBirthDay, pCode, pAddress, pAgency, pExpireStart, pExpireEnd: PChar;
begin
ret:=test(sMsg,0);
if ret <> 1 then
begin
ShowMessage('信息读取失败');
Exit;
end;
Memo1.Lines.Add(sMsg);
end;怎么MEMO1里显示的是乱码?
解决方案 »
- 如何把000006FDBFEBFBFF0000E39D加密成更短的数字字母组合?
- 最后确认一下选择delphi的正确性
- 求用delphi7设计的socket客户端的方法,并实现通过socket接口发字符串的功能,包括具体源码和编写过程,我是菜鸟,谢谢
- 在一个form里,memo可以被清空,但为什么这样做却没有清空呢?
- 请问如何定义一个字符串(为原素)的集合?
- 熟悉Formula One 的高手请进!!!
- adoconnection如何处理并发操作?
- delphi存取图片问题(sql或Oracle)
- 有上海招程序员的吗?我会象牛一样勤快的!
- 如何释放上一个函数getmem?
- RooyeeMessenger由Delphi开发的XMPP即时通讯客户端(开源)
- 很奇怪,我程序的所有的事件不行了,提示无法执行,在线等
改为array[0..192] of Char; 试试
function test(pMsg:PChar; var len:Integer):Integer; cdecl; external NAME_DLL name 'test';
否则在C++中改变定义:extern "C" int __stdcall test( unsigned char * pMsg, int * len);
procedure TForm1.Button3Click(Sender: TObject);
var
ret, mLen: Integer;
sMsg: array[0..192] of Char;
begin
mlen=193;
zeromemory(@smsg[0],mlen);
ret:=test(sMsg,@mlen);
if ret <> 1 then
begin
ShowMessage('信息读取失败');
Exit;
end;
Memo1.Lines.Add(strpas(sMsg));
end;