调用态库(Dll)时关键这"far"是什么意思?(50分)

  • 主题发起人 主题发起人 保龙
  • 开始时间 开始时间

保龙

Unregistered / Unconfirmed
GUEST, unregistred user!
function Max(x,y:integer):integer; &nbsp;stdcall; &nbsp;far; &nbsp;external 'PenDll.dll';<br>如上:)<br>"stdcall" 是标准调用是吧?<br>"external" 是引用外部是吧?<br>"far" 是什么意思?<br>
 
far:也是DLL调用的方式说明适用于DELPHI1,DELPHI2,DELPHI3,<br>stdcall:是一种较为安全的调用在D5,D6中用的多;<br>
 
Stdcall(必选),表示传递约定,这样调用模块(应用程序),与被调用模块(DLL)就使用相同的参数约定。关键字external(必选),声明访问外部函数。<br>
 
far主要针对16位的
 
调用一个DLLs中的过程或函数时,external指示增加到过程或函数的声明语句中。被调用的过程或函数必须采用远调用模式,使用far过程指示或一个{$F +}编译指示。
 
&nbsp;jihao:=mystrtoint(FlatComboBox1.Text );<br>&nbsp; qh:=mystrtoint(FlatComboBox2.Text );<br>&nbsp; jihao:= (jihao shl 4) or (qh shl 3) or (1);<br>&nbsp; s:=copy(FlatComboBox3.Text,1,2);<br>&nbsp; crc := $77+3+jihao+strtoint('$'+s);<br>&nbsp; scmd:=byte2hex(3)+byte2hex(jihao)+s+byte2hex(crc);<br>&nbsp; scmd:=byte2string($FA)+strtran(hex2string(scmd),#$FA,#$FA#$FA);<br>&nbsp; FlatEdit1.Text:=string2hex(scmd);
 
&nbsp;jihao:=mystrtoint(FlatComboBox1.Text );<br>&nbsp; qh:=mystrtoint(FlatComboBox2.Text );<br>&nbsp; jihao:= (jihao shl 4) or (qh shl 3) or (1);<br>&nbsp; s:=copy(FlatComboBox3.Text,1,2);<br>&nbsp; crc := $77+3+jihao+strtoint('$'+s);<br>&nbsp; scmd:=byte2hex(3)+byte2hex(jihao)+s+byte2hex(crc);<br>&nbsp; scmd:=byte2string($FA)+strtran(hex2string(scmd),#$FA,#$FA#$FA);<br>&nbsp; FlatEdit1.Text:=string2hex(scmd);
 
多人接受答案了。
 
&nbsp; &nbsp;far类似与汇编的段间调用
 
后退
顶部