vc的函数声明如何转换到delphi,急求大虾帮忙

raincy 2006-08-03 02:24:01


在动态库中有这么个函数,下面是它的原型
unsigned char Read_Code(unsigned char buffer[])

我在delphi中加载dll的时候怎么声明呢?
请大虾不吝赐教,先谢了~
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
raincy 2006-08-16
  • 打赏
  • 举报
回复
我用定义数组的方式也搞定了,多谢大家
上个星期在出差,没来得及给分 :D
teapot 2006-08-03
  • 打赏
  • 举报
回复
昏,还在搞???

算了,帮你写一下。事实上,指针操作是极其灵活的,可以用很多方式:
方式一:
function read_code1(P:array of byte):byte;stdcall; external '你的DLL' index 1;//或者是 name 'read_code'
function read_code2(P:PByte):byte;stdcall; external '你的dll' index 1;
function read_code3(P:Pointer):byte;stdcall; external '你的dll' index 1;

调用方式:
var P1,P2:PByte; B,i:byte; pa:array of byte;
P:Pointer;
begin
B:=$FF;//先给个值,免得怀疑函数调用没作用。
SetLength(pa,10);
for i:=0 to 9 do
Pa[i]:=I;
B:=Read_Code1(pa);
ShowMessage('read_code1 :'+IntToStr(B));
//
Getmem(P1,10);
P2:=P1;
for i := 0 to 9 do
begin
P2^:=I;
inc(P2);
end;
B:=$FF;//先给个值,免得怀疑函数调用没作用。
B:=Read_Code2(P1);
Freemem(P1,10);
ShowMessage('read_code2 :'+IntToStr(B));


P:=@pa[0];
B:=$FF;//先给个值,免得怀疑函数调用没作用。
B:=Read_Code3(P);
ShowMessage('read_code3 :'+IntToStr(B));
end;
dabaicai 2006-08-03
  • 打赏
  • 举报
回复
在有值的情况下,不需要也可以
raincy 2006-08-03
  • 打赏
  • 举报
回复
在吗?
raincy 2006-08-03
  • 打赏
  • 举报
回复
呵呵,谢谢teapot(茶壶),dabaicai(一直是菜鸟)
你们能再告诉我,怎么使用这个函数吗?
是不是

function TForm1.dosomting;
var
pbuf: PChar;
begin
try
GetMem(pbuf, 250);
Read_Code(pbuf);
FreeMem(pbuf);
except
end;
end;

需要这样吗?还是不用GetMem的?
teapot 2006-08-03
  • 打赏
  • 举报
回复
看错了,呵呵,返回值不是指针。是这样的:
function Read_Code(Buffer :PByte):Byte;
raincy 2006-08-03
  • 打赏
  • 举报
回复
还有就是调用的时候怎么写呢?
teapot 2006-08-03
  • 打赏
  • 举报
回复
//unsigned char Read_Code(unsigned char buffer[])
不过,如果严格要求的话,应该是这样:
function Read_Code(Buffer :PByte):PByte;
一般应用中,其实PChar也行。
raincy 2006-08-03
  • 打赏
  • 举报
回复
如果是pchar的话需要getmem吗?
是不是声明成

function Read_Code(pbuf: PChar): char external 'codeedit.dll';

麻烦您了~
dabaicai 2006-08-03
  • 打赏
  • 举报
回复
pchar方便
teapot 2006-08-03
  • 打赏
  • 举报
回复
pchar或者直接Pointer

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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