高分求解,对我来说很难,如果不会也可以帮顶一下(200分)

  • 主题发起人 主题发起人 love_xinwang
  • 开始时间 开始时间
L

love_xinwang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问用c声明的一个函数怎样改成为用DELPHI声明?如何调用?<br>函数存在于aaa.dll中,它是用c写的,我现在要在DELPHI中调用<br>int WINAPI SubmitA(unsined long* SM_ID,unsined char* FCS)
 
只要诚必帮我的都有分,不够的还可以加
 
SubmitA(SM_ID :^ULONG, FCS :^UCHAR) :Integer; stdcall
 
应该是这样:<br>定义:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall<br>声明:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer;<br>begin<br>end;<br>已测试。无问题。
 
unsined long*和unsined char*是指针类型的?
 
我倒觉得 FUNCTION SubmitA(SM_ID :^ULONG, FCS :^UCHAR) :Integer; stdcall<br>更正确,下午我要去测试,能再说的详细一点吗?
 
c中的指针参数同pascal的var关键字,都是传地址。
 
yyii_yyii,那如何调用呢?能举个例子吗?如果问题解决了,还可以高分奉送!(在线等待)
 
调用?我没理解错的话是不是从DLL中引入啊。<br>直接定义就可以:<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll'<br>以后你程序中可以直接用它;<br><br>
 
不需要在类中定义<br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br>//定义在此比较好<br>function SubmitA(var SM_ID :ULONG; var FCS :UCHAR) :Integer; stdcall; external'c:/aaa.dll';<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>end.
 
定义我搞清楚了,我指的是在程序中的调用,还有c中的unsigned类型和delphi中<br>string类型是不是兼容的?
 
调用就直接调好了<br>c中的unsigned是无符号的意思,所以unsined char* FCS就是<br>无符号字符串指针的意识,Delphi中的string是类类型,是不兼容的,<br>Delphi中使用BYTE类型的指针和C中的char*就一样了。
 
procedure TForm1.FormCreate(Sender: TObject);<br>var<br>aa :pChar;<br>bb:ULONG;<br>begin<br>GetMem(aa,100);<br>StrCopy(aa, 'aaaaa');<br>SubmitA(bb, aa);<br><br>end;
 
好的,谢谢!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
624
不得闲
后退
顶部