看来又要破费了 :) 为什么SYSTEM等文件不能被编译.(50分)

  • 主题发起人 主题发起人 QQ989753
  • 开始时间 开始时间
请大家继续关注.
还是那句话:
现在,问题似乎变成了:"为什么DELPHI不肯编译我改动的DIALOGS之类的单元".
改名或是删除DCU也不行.而且,我想正面知道原因.大家都知道,我们自己的文件,只要有PAS,DELPHI会从PAS开始工作,生成DCU.为什么DIALOGS这样的文件偏偏不呢?
期待ING……
大家也可以就
>>"来自:jiangxiancheng, 时间:2003-6-24 9:14:00, ID:1975901"
>>对于把Lib下的dcu改名后还是不编译的问题。我也不太清楚。我想可能是delphi在其运行包
>>中发现已有了dialogs的单元,就直接链接了。就没有去编译。
进行表态.
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=237769
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=293314

这里已经说的很清楚了
 
上面两个链接确实不错.不过
请大家继续关注.
还是那句话:
现在,问题似乎变成了:"为什么DELPHI不肯编译我改动的DIALOGS之类的单元".
改名或是删除DCU也不行.而且,我想正面知道原因.大家都知道,我们自己的文件,只要有PAS,DELPHI会从PAS开始工作,生成DCU.为什么DIALOGS这样的文件偏偏不呢?
期待ING……
大家也可以就
>>"来自:jiangxiancheng, 时间:2003-6-24 9:14:00, ID:1975901"
>>对于把Lib下的dcu改名后还是不编译的问题。我也不太清楚。我想可能是delphi在其运行包
>>中发现已有了dialogs的单元,就直接链接了。就没有去编译。
进行表态.
 
废话,编译器内置了,当然不会编译诸如System.pas之类的文件了!我说都说累了,如果Delphi是你写的,你会不会在编译器里面跳过此类文件的编译了
 
TO 萧星离:
编译器内置了?
编译器并不有内置DIALOGS之类的文件,只是内置了SYSTEM.
说累了,可以休息一会,喝点咖啡,醒醒脑, :)

所谓内置,是你无论怎么样,它都编译的.你可以在程序中不USES dialogs,
而使用SHOWMESSAGE吗?
 
我刚刚试过了,Dialogs改过以后按我先前说的方法是可以编译的!
 
To 萧星离:
你先前说的?是指下面这些吗?
>>最好的方法是把SYSTEM.pas等文件放到你当前的应用程序的目录下,这样程序就可以最先>>从这里搜索,而且只在当前的程序又效,不妨碍别的程序的完整性!
if True then
麻烦你仔细看看发表过的讨论
else
Showmessage(你先前说的方法) ;
 
我就是这样做的,并且编译了,如果你还要怀疑的话,我就把代码发给你!拿妹儿过来!
 
小秘密:
目前来讲,jiangxiancheng的言论对本问题的讨论很有价值.
至于,萧星离,他对本问题的讨论白热化有巨大的贡献.
但却忽略了:******问题似乎变成了:"为什么DELPHI不肯编译我改动的DIALOGS之类的单元".*****,由于没有了上下文环境,我只能以这里补充一下.&&&&&&&&&为什么DELPHI不肯编译我改动的$$$$$$系统的$$$$$$$DIALOGS之类的单元&&&&&&&&&&&,并不是拷到自己的目录下的DIALOGS.
 
按照你说的,在我引用C:/Program Files/Borland/Delphi6/Source/Vcl了之后也通过的编译!我实在是愚钝到不明白你的想法以及你为什么不能通过,或者你研究这个问题的意义到底在什么地方!
 
萧星离,你有QQ吗?请联系QQ78128222.这里太不方便了.
 
呵呵,抱歉!我这里不能使用QQ的说!要罚款的!
 
>>萧星离,你有QQ吗?请联系QQ78128222.这里太不方便了.
可以用大富翁聊天室
 
你把C:/Program Files/Borland/Delphi6/Source/Vcl/下的DIALOGS文件改动以后,改成错的,编译是不是也过去了?难道不奇怪吗?
现在,我想我已经可以得出一些结论.马上吃饭了,一会整理一下发布出来.
>>我实在是愚钝到不明白你的想法以及你为什么不能通过,或者你研究这个问题的意义到底>>在什么地方!
不能通过就对了,通过了反而不正常.我正是编译通过,才引发此问题.
这个问题,其实正是你所说,没有什么意义.最了不起的一点作用,也就是加深了我对DELPHI的思考.呵呵.当然,有一个最大的贡献,让我通过讨论在这里认识了一些朋友.

 
本想长篇大段地把问题的来龙去脉写清楚,可是,刚刚想写就

停住了,本来一个小问题,值得花大量的时间写它吗?不值.那

么,不写了吧,也不行,答应要写上来的.而且,也是自己走的一

段弯路,写出来吧,免得别人同我一样.所以,简单写一下得了,

两全齐美.
不说事情的由来了吧,总之,由这个问题.得出以下的结论,不

要笑,这个结论简单得,我直想说:"!@#$%^&*"
那就是,
1.DELPHI总会在搜索路径下优先找PAS文件,由它来生成DCU文

件.再利用DCU文件来生成EXE文件(或DLL文件).
2.DELPHI在搜索不到PAS文件时,会直接找DCU文件,当然,如果

DCU文件也找不到,那对不起哟,编译器罢工.
3.SYSTEM.DCU是一个特殊的文件,它不是由SYSTEM.PAS生成.

是编译器内置的.
4.DELPHI,搜索文件是按由内到外的顺序进行的(由编译器内

到编译器外,工程内到工程外).
好了,基本以上这些比较简单地结论,来分析问题的产生及每

个人的做法.
首先,我说说自己的问题.由于,没有注意到delphi的

Dialogs.dcu和Dialogs.pas不在同一文件夹下,以为,系统是

从PAS开始编译的,所以,认为,不正确的PAS编译通过是不正常

的.其实,编译器直接使用的是DCU.
logingyw, 说"delphi直接调用 .dcu,如果你在工程选项中设

置查询路径
C:/Program Files/Borland/Delphi7/Source/Rtl/Sys

Delphi 就要报错了"呵呵,好像是很对,可是,他忽略了他给出

来的路径是SYSTEM.pas的路径,并且,可以肯定的是,他没有试

一下.其实,由于system.pas比较特殊,要不然,他真是一语中

的.不过,既然有这个"要不然"存在,他就不能得全分啰.
whtsuperant说:"先把system 和 Dialogs的dcu改名",呵呵,

看得出来,他也是知道从pas到DCU的道理.不过,他也没有试一

下.因为,SYSTEM.DCU是不能改名的,否则,程序没有办法运行

了.Dialogs.dcu改名,这是一个好办法,强制让DELPHI用PAS来

编译,不过,这时应该是先关闭DELPHI,再打开.否则,由于

DELPHI的记忆效应,编译并不报错.而是运行时出错,说找不到

文件.而巧合的是,由于是测试程序,一般根本不会去执行,界

面上一个东东没有,会有什么错误呢?结果,可想而知. 如果

关闭后打开,DELPHI报告文件找不到,指定路径后,又没有必要

改名了.DELPHI会从PAS开始.所以说,改名不是关键.
来自:萧星离, 时间:2003-6-23 17:34:00, ID:1974817
最好的方法是把SYSTEM.pas等文件放到你当前的应用程序的

目录下,这样程序就可以最先从这里搜索,而且只在当前的

程序又效,不妨碍别的程序的完整性!
其实这样做的目的是让DELPHI在程序内找,那自然可以编译了

.当然,SYSTEM.PAS是不能加入到工程中去的.因为,编译器已

经内置了.由于优先顺序,DELPHI先编译工程内的,所以,"不能

编译"的问题被忽略.
来自:jiangxiancheng, 时间:2003-6-24 8:53:00, ID:

1975812
system的处理特殊一些。对DIALOGS你可以拷到项目目录中。

再把DIALOGS单元加入到你的
项目中就行了。这时你再改改。一定会报错的。
因为对于在$DELPHI/lib上有相应的dcu文件的单元,delphi

是不会对其重新编译的,你只
有把它加入到你的工程中dephi才会重新编译。
这些话基本是对的,也说出来SYSTEM比较特殊.也告诉了大家

具体做法.比较有价值,可是,最后的一句是有错误的.
我不把$DELPHI/lib上有相应的dcu文件的单元加到工程中,如

果设置好了搜索路径(含相应PAS的路径),就可以编译了.To

jiangxiancheng:
>>因为对于在$DELPHI/lib上有相应的dcu文件的单元,

delphi是不会对其重新编译的,你只
>>有把它加入到你的工程中dephi才会重新编译。
那为什么在$DELPHI/lib上没有了相应的dcu文件的单元

,DELPHI仍然不编译呢?比如,我将DIALOGS.DCU改名.
就是由于我没有关闭DELPHI或是没有运行.
是DELPHI的记忆骗了我.
萧星离,是发表次数最多的了.也帮我认清了问题的根本.
提供的链接也是十分的有价值,不过,呵呵,我早就看过了.
还有,萧星离,你应该知道,编译器绝对没有内置那么多的东东

.我目前知道的,只有SYSTEM.
问题到这里,好像全都清楚了.其实到后来,才知道,真的是一

个小问题.这些概念,我们还是清楚的.罪魁祸首,是DELPHI将

DCU与PAS不放在一个目录下.当然,人家这么做有自己的好处,

怕我这些不懂的人给改坏了.那罪魁祸首只能是自己的,是自

己大意,没有发现DELPHI的用心所在.
结识大家比较高兴.希望以后大家多多交流.
问题保留一天,没有其实问题的话,结账.
 
参与的人太多 :)
分又太少 :(
没分到分的朋友,等下次啰.
 
后退
顶部