我用的是Delphi XE3,目前我的单元里函数太多,其中一个很长,所以我想把那个长函数放到另一个单元里,可以吗?
我尝试如下:
单元1:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure Test;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
...
单元2:
unit Unit2;
interface
implementation
uses Unit1;
procedure TForm1.Test;
begin
end;
end.
但是编译失败,显示"[dcc32错误] Unit1.pas(16):E2065未满足的转发或外部声明:'TForm1.测试'"
2条答案
按热度按时间hm2xizp91#
你不能把类方法的实现移到另一个单元。但是,你可以把它的内部代码重构成另一个单元中它自己的函数,然后从你的类方法中调用那个函数,例如:
guykilcj2#
1.属于同一类的函数必须在一个单元中(您的错误原因)
1.声明和实现必须在同一单元中
1.如果要将其拆分,则需要使它们位于不同的类中