请问:inteface 中的uses和implementation 的uses有什么不同,uses中文件的顺序有关系吗?(50分)

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

lan2001

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:inteface 中的uses和implementation 的uses有什么不同,uses中文件的顺序有关系吗?

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Message(Application.MessageBox('确定删除吗?', '提示', [smbOK,smbCANCEL],smsWarning,smbCANCEL,smbCANCEL);
end;
1. 在interface中包含,forms,Qforms时,按f9,运行什么也没有,form都没show出来。
2.把Qforms放到forms的前面,编译通不过。
3.后来,我把Qforms放到implementation中,就对了。
请您解释一下,这是为什么?
 
对于use里面的文件的顺序,确实存在,最典型的是:SetFocus,普通的使用Forms里面的SetFocus.
而同样Windows.pas里面也有一个SetFocus,如果要用这个SetFocus,那么就需要加上Windows.SetFocus了。
也就是说他是按照顺序从前向后找的。
 
是从后往前找的吧
 
你说得很模糊,一般只有两个地方用use。一处是:单元文件里的use,是作为应用函数库文件
用的,比如:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,shellapi, ExtCtrls;
这是个提取exe文件里的icon的单元文件的引用部分,其中用到ExtractIcon()这个函数,
该函数就在shellapi.lib中。
另一处是:在工程文件头。这里的引用就是引用单元文件。你所说的调用form就是在这加
入引用(单元文件是包含form的)。还有问题的话,你把你的程序贴上来再瞧瞧!
 
interface 中的uses和implementation 的uses不同在于:
interface中uses的所有单元在编译该单元时必须已编译而implementation中uses的单元
没这个必要。所以你自己编写的程序中的单元引用都放在implementation中,如果你在
unit1中的interface中引用unit2,而在unit2中的interface中引用unit1,编译程序在编译
unit1时发现unit2还没有编译,就编译unit2,而unit2又引用unit1,编译程序就会报循环
引用的错误,而在implenentation中引用就没问题。
 
不能进行循环引用。
 
多人接受答案了。
 
后退
顶部