导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/19 15:43:42
标题:
大侠来帮忙,给看一下DLL的问题。
浏览:1660
加入我的收藏
楼主:
如下是DELPHI 5开发人员指南中的讲的一个DLL,但我不知他这样写有什么优点,为什么加了一个dllIntf.pas,而且TrecCoin记录为什么要在这里定义?有什么优越性吗?但是当我在程序中调用 function FenTocoins(totFen:word;recCoin:PrecCoin):word;stdcall; external 'intf.dll' name 'fenTocoins'; 时却出现未声明的数据类型,难道这本书会搞错或是能故弄玄虚吗? //************************如下是intF.dpr单元***************************** library intf; uses SysUtils, Classes, dllIntf; //function fenToCoins(TotFen:word;recCoin:PrecCoin):word;stdcall; {$R *.res} function fentoCoins(TotFen:word;recCoin:PrecCoin):word;stdCall; begin result:=TotFen; with recCoin^ do begin Yuan :=totFen div 100; totFen:=totFen -yuan*100; wujiao :=totFen div 50; totfen:=totFen -wujiao*50; yiJiao:=totFen div 10; totFen:=totFen -yiJiao*10; wuFen :=totfen div 5; totfen:=totfen -wufen*5; erFen :=totFen div 2; totFen:=totFen -erFen*2; yiFen :=totFen; end; end; exports FenToCoins; end. //**********如下是dllIntf.pas单元********************************** unit dllIntf; interface type PrecCoin=^TrecCoin;//这个为什么不在intF.dpr单元中定义,是不是有什么优点? TrecCoin=record yuan, wuJiao, yiJiao, wuFen, erFen, yiFen:word; end; {$IFNDEF INTF} function FenTocoins(totFen:word;recCoin:PrecCoin):word;stdcall; {$ENDIF} implementation {$IFNDEF INTF} function FenToCoins;external 'INTF.DLL' name 'FenToCoins'; {$ENDIF} end. 对了,还有就是这两个单元中哪个是引用单元、哪个是接口单元呢?书上写了但我实在有点分不清啊有点让我看不懂,谢谢!
----------------------------------------------
-
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/19 16:31:09
1楼:
这个这么难吗?
----------------------------------------------
-
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/19 18:46:22
2楼:
明白了,这是通过接口调用DLL 那个pas是接口单元
----------------------------------------------
-
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/19 18:51:35
3楼:
那这样用什么优点呢
----------------------------------------------
-
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/20 7:41:29
5楼:
good morning,sephil,your hard disk were OK already? 那么function FenTocoins(totFen:word;recCoin:PrecCoin):word;stdcall;为什么要在接口单元中声明呢?为什么不在dpr中声明呢,因为那个函数体是在dpr中啊? 还有就是它加上个条件编绎指令的原因是什么呢? OK THANKS!
----------------------------------------------
-
作者:
sephil (NAILY Soft)
★☆☆☆☆
-
盒子中级会员
2004/2/20 16:27:54
6楼:
{$IFNDEF INTF} function FenTocoins(totFen:word;recCoin:PrecCoin):word;stdcall; {$ENDIF} implementation {$IFNDEF INTF} function FenToCoins;external 'INTF.DLL' name 'FenToCoins'; {$ENDIF} 这些内容实际是对Dll中函数的引用 看见 {$IFNDEF...}这些了么 这些是预编译指示符 在写Dll的时候只要定义一个 {$DEFINE INTF} 那个Dll工程中{IFNDEF}中的这些内容Delphi不会处理的 而Exe中没有这个定义,那么对于Delphi来说这些内容就是可见的 好好看书吧
----------------------------------------------
Copyright 2008 ? NAILY Soft
Click here to redirect to my home Click here to redirect to my blog
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/20 17:58:20
7楼:
谢了,sephil兄,你可真够强啊,我可服了你了,真的 原来 {$IFNDEF INTF} function FenTocoins(totFen:word;recCoin:PrecCoin):word;stdcall; {$ENDIF} 不是为dpr定义函数啊,谢谢!
----------------------------------------------
-
作者:
bios (阿贡)
★☆☆☆☆
-
盒子中级会员
2004/2/20 18:05:58
9楼:
sephil 大哥是这里的老大哦!当年人家是CSDN上的高手一份哦!
----------------------------------------------
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/20 18:25:29
11楼:
是高手,没错的!:)
----------------------------------------------
-
作者:
2004/2/20 19:15:20
12楼:
高手呀!!!!!!!! 灌水! 在2ccc攒够 2000分!!!!!
----------------------------------------------
作者:
2004/2/20 22:29:25
13楼:
我不太喜欢CSDN,功利性太强。。。很少有象这里能热情帮助别人的人。 dfw去过几次但没什么印象。
----------------------------------------------
夫君子之行,静以修身,俭以养德.非澹泊无以明志, 非宁静无以致远.夫学须静也,才须学也,非学无以广才, 非志无以成学,淫漫则不能励精,险躁则不能治性,年与时驰, 意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!
作者:
zxdcj (月下舞者)
★☆☆☆☆
-
盒子活跃会员
2004/2/21 7:55:44
14楼:
大富翁和DELPHI盒子好像是一家的,只不过是一国两制而以,这样更适合国情!
----------------------------------------------
-