在DELPHI中如何像其它语言一样include代码文件 ( 积分: 50 )

  • 主题发起人 主题发起人 贫烦
  • 开始时间 开始时间

贫烦

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把程序的一个功能模块写到另一个文件中以便管理,结构如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation

{$R *.dfm}
{$I Unit2.pas}
//意思为粘贴Unit2.pas的代码到这里

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption := '1';
end;
end.

以下为代码文件Unit2.pas:
unit Unit2;
interface
implementation
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Caption := '2';
end;
end.

我知道自己上面的代码有多BT,大家请不我PT
以上只是想说明我想做的,请告诉我应该怎样做才会法。
 
我想把程序的一个功能模块写到另一个文件中以便管理,结构如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation

{$R *.dfm}
{$I Unit2.pas}
//意思为粘贴Unit2.pas的代码到这里

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption := '1';
end;
end.

以下为代码文件Unit2.pas:
unit Unit2;
interface
implementation
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Caption := '2';
end;
end.

我知道自己上面的代码有多BT,大家请不我PT
以上只是想说明我想做的,请告诉我应该怎样做才会法。
 
不是很明白,你可以建一个单元,用函数来调用!
 
这里跟脚本语言不同,不能将代码做为一段来管理。
你可以用USES将UNIT2引用到UNIT1下面,使用起来只需要引用便可。
 
用uses [单元名]

在implementation后面
 
大家注意Button2Click可是第一单元的事件
我程序里大部分引用都会访问第一单元
就是想做得和HTML中的JAVA脚本引用那样
 
注意,在文件1里用$I包含文件2,相当于直接把文件2的内容插到文件1的对应位置!

所以,你该知道怎么办了吧?
 
C里面的#Include在Delphi里其实就相当于uses呀,你写好另一个单元,引用时就uses 单元名 就行了
 
教您一招: {$I ../Common/Define.Inc}
 
我已经知道$I的功能
但{$I Unit2.pas}不行呀
谁能改一下顶楼的代码变成合法的
 
当然不行, {$I}是完全拷贝, 难道一个单元里面能有多个"implementation&quot
"interface&quot
吗?
 
有没有办法呀
 
刘麻子兄已经告诉你答案了。你的unit2.pas不合法,你修改你的unit2.pass,里面只包含下面的代码(不在下面列出的代码删掉):

procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Caption := '2';
end;

再编译,看看不就行了?{$I}编译指令的含义就是包含引入文件的全部,等于就是你打开引入文件全选,拷贝,然后粘贴到现在文件的{$I}部分一样!明白吗?
 
谢谢!
已经测试通过,用$I的方法行得通,但不能动态修改和加载,我之前就是疏忽没有重加载所以测试不通过的。
 
后退
顶部