情非得已,不得不再次破费,这个问题你清楚了没有?(50分)

  • 主题发起人 主题发起人 QQ989753
  • 开始时间 开始时间
编译期通不过,,我想还是要多检查一下自己的环境设置对不对。。
 
我倒不这么认为.
因为,如果直接写USES,可能是环境设置原因.现在,是直接加到工程中.

唉,哪位大侠能一语道破呀.本来,以为这是比较简单地问题,只是我不知道而矣,现在看来,不是这样子呀.那么,分又给少了. :(
 
很有意思的讨论!
 
期待中……
 
第二种情况不给你编译A。PAS
 
第二种情况不给我编译A.PAS??
如果这是对的,那么似乎可以解释我的问题.第二种情况下,当我使用A中的过程或是函数时,只有使用到的过程或是函数才被编译到吗?
不相信这是真的,于是,我做了一个例子,发现,确实不是真的.即第二种情况,也编译A.PAS.

呵呵.虽然欢迎大家比较积极发言,但还是请大家说一些比较负责任的言论.因为,别误导了别人,当然,对我的影响不大,因为,我不会轻信谁的话,我会用程序来证明的. :)
 
A单元是用DELPHI导入类型导进来的单元
导入单元时只能导入类型的定义,像方法、事件的实现代码是不能导入的,当你加入编译时,Delphi生成.dcu文件的,编译时没有方法、事件的实现代码当然不能通过,当你用第二各方法时,Delphi不重新生成.dcu,而你以前的.dcu就是可用的
不信你编译时看文件时间的变化,另外找个.ocx文件导出.pas看看
 
TO 楼上的朋友:
>>导入单元时只能导入类型的定义,像方法、事件的实现代码是不能导入的.
呵呵,你真的仔细看了吗?导入时是可以导入过程及函数的.
>>当用第二种方法时,Delphi不重新生成.dcu,而你以前的.dcu就是可用的.
那我把A.DCU删除了呢?为什么我删除了以后,还是可用的?


 
哪位老兄借我个空间,我把代码传给大家看看.
 
A.pas中引用了其它delphi找不到的单元了吗。你看看。
 
楼上的可能是一种线索,当A使用其它单元时,而这个单元又是DELPHI找不到的.那么,加到工程中,一定会出错,但写到USES中,就可以了吗?没有验证过,过会儿验证一下.
不知道是惊喜还是失望.我都失望怕了.

:)
 
a的代码

firstrose@163.net
 
有愿帮忙的请提供EMAIL.
我给大家发过去.这个例子打开后,可以编译通过,可以运行,结果也正确(为了减少问题的可能来源,我删除了我自己写的代码部分)
当,你试图把A.pas加到工程中时,出现错误.
我想请大家帮忙一下是什么原因,以及由此引出的,加到工程和直接USES两种方式到底有什么区别.谢谢.
 
这二种都一样的,你为什么不把这二个分别写成COM组件,或其他DLL之类的,然后互相调用呢,就不必用pas共享。
 
不要回避问题好不好.
不是我为什么不.而是问题产生的原因是什么?
请楼上的不要拿什么COM,DLL来吓我好不好,会就是会,不会就是不会,你就是不发言,我也不会怪你,当然,怪也怪不到,可是,你突然来这么一句不驴不马的话,什么意思呀.就是骗分,也不是这么个骗法. 实在看不惯,才……
 
加到工程好像需要在系统注册,
USES就是直接使用了
 
有没有谁愿意针对
>>加到工程好像需要在系统注册,
>>USES就是直接使用了
进行展开或评述.
 
肯定是导入的问题了
比如我要导入ADO类型库,
肯定要现在系统中注册它(ActiveX机制)
 
好了!我知道原因了!

注意,a.pas里有以下说明:
interface
......
Type
_Application = interface;
......
Application = _Application;
......

大家知道,Forms单元里说明了变量Application并在dpr文件里有以下使用:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

那么,如果加入工程后,由于“a in 'a.pas',”一行在“Forms,”的后面,当引用
到Application时,delphi缺省引用a里的Application。而大家看到了,a里的Application
就是interface,根本不是TApplication类型的变量,当然出问题!
而在unit1.pas里uses时,由于unit1没有用到Application,尽管前面引用了Forms,
也不会有问题!

那么,解决的方法很清楚了:
1、加入工程后,把两个引用行调换位置(最好)。
2、在dpr里的Application前加上“Forms.”以表示引用的是Forms里的App...
不过要注意,引用到Forms里的App...时,最好加上“Forms.”,而那个a里面的估计
没人会刻意引用。

好了,就这么简单的问题,最后扯到了ActiveX......不过希望以后苦主们把代码
贴出来或提供下载,否则一定会有更加奇怪的回答......
 
首先,十分感谢 firstrose.
其次,向大家呼吁,学学firstrose,看看人家是怎么解决问题的,尤其是上面那位说什么COM,DLL的话的人.当然,也有我的错,我没有自己的空间,也没有想办法上载到哪,给大家解决问题带来不便.
其实,这个问题被点开了以后,就十分的简单了,但,发现问题的实质却不是那么容易的事情.
再次感谢firstrose.
这里的分数大家分一分吧,另开一贴,专门感谢firstrose.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2041803
 
后退
顶部