调用C++ dll问题,在线求助!

proponent_hc 2011-09-02 08:26:09
	
#define SIZE (512)
unsigned char ATemplet[SIZE];
unsigned char BTemplet[SIZE];

int WINAPI Getinfo(HANDLE hHandle,unsigned char* ATemplet);
int WINAPI Upinfo(HANDLE hHandle,unsigned char* BTemplet);


function Getinfo(hHandle:LongWord;var ATemplet:pChar):smallint; stdcall; far;external 'AXAPI.dll' name 'Getinfo';

function Upinfo(hHandle:LongWord;var BTemplet:pChar):smallint; stdcall; far;external 'AXAPI.dll' name 'Upinfo';



// 这样调用程序可以正常运行.
var ATemplet:Pchar;
begin
GetMem(ATemplet,512);
Getinfo(hHandle,ATemplet);
Upinfo(hHandle,ATemplet);
.....
end;
//问题:
var ATemplet:Pchar;
TempData:array[0..512] of char;
Str:string;
begin
GetMem(ATemplet,512);
//获取ATemplet
Getinfo(hHandle,ATemplet);
Str:=ATemplet;// 这样取不到值. 在 C++ ATemplet存的是512字节,于时我用Copymemory
Copymemory(@TempData,@ATemplet,512);//这样可以取到数据.但却导致Upinfo执行失败.
//注:屏蔽Copymemory整个代码却是正常运行.
Upinfo(hHandle,ATemplet);
.....
end;

-------------------------------------------------------
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
proponent_hc 2011-09-02
  • 打赏
  • 举报
回复
非常感谢两位参于 ljmanage bdmh
回复:ljmanage 是用的delphi7.0
补充一下我的代码
---------------------


var ATemplet,BTemplet:Pbyte;
TempData:array[0..511] of byte;
Str:string;
begin

GetMem(ATemplet,511;
//获取ATemplet
Getinfo(hHandle,ATemplet);
//以下两句代码出现问题
Copymemory(@TempData,@ATemplet,511);
BTemplet=pbyte(@TempData);
-----执行到这里 BTemplet 可能与ATemplet 不相等了.
Upinfo(hHandle,BTemplet);
.....
end;
bdmh 2011-09-02
  • 打赏
  • 举报
回复
还有你的[0..512] ,这是513字节,c++是512,你应该定义为
[0..511]
李_军 2011-09-02
  • 打赏
  • 举报
回复
unsigned char*
对应的是pByte
先改改看吧还有你是d7以下版本吧
proponent_hc 2011-09-02
  • 打赏
  • 举报
回复
加了一句 Copymemory(@TempData,@ATemplet,512);
导致ATemplet向后面的代码传递时就不对.请问是什么原因啊?
yushf 2011-09-02
  • 打赏
  • 举报
回复
var
TempData:array[0..511] of byte;
Str:string;
begin

Getinfo(hHandle,@TempData[0]);
Upinfo(hHandle,@TempData[0]);
.....
end;
yushf 2011-09-02
  • 打赏
  • 举报
回复
//以下两句代码出现问题
Copymemory(@TempData,ATemplet,511);

1,183

社区成员

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

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