`E1026找不到文件Unit2.dfm`

时间:2016-03-16 00:42:19

标签: android delphi

我有一个简单的TCP服务器应用程序,我已从互联网上复制过来。

unit TCPServer;

interface

uses
  System.SysUtils, System.Variants, System.Classes,
  FMX.Forms, FMX.Dialogs, IdBaseComponent, IdComponent, IdSocketHandle,
  IdCustomTCPServer, IdTCPServer, IdContext;

type
  TForm2 = class(TForm)
    Tserver: TIdTCPServer;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TserverExecute(AContext: TIdContext);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Binding : TIdSocketHandle;
begin
  Tserver.DefaultPort := 16000;
  Tserver.Bindings.Clear;
  Binding := Tserver.Bindings.Add;
  Binding.IP := '0.0.0.0';
  Binding.Port := 16000;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Tserver.Active := True;
end;

procedure TForm1.TserverExecute(AContext: TIdContext);
Var
C : String;
begin
 C:= AContext.Connection.Socket.ReadLn();

 if C = 'TESTSTRING' then
 begin
   AContext.Connection.Socket.Writeln('SENT');
 end;


end;

end.

我试图让它在Android设备上编译。我创建了一个新的多设备表单Unit2 (Unit2.pas and Unit2.fmx )并将上述文件粘贴到Unit2.pas中。

当我编译项目时,我收到错误

E1026 File not found Unit2.dfm

我是delphi编程的新手。我想知道什么是dfm文件。它与fmx文件有什么不同,这似乎是在我的IDE上创建表单的正确方法。我正在使用Embarcadero® Delphi 10 Seattle

1 个答案:

答案 0 :(得分:4)

根据我在代码中看到的内容,您使用的是VCL Forms Application,仅适用于Windows。但是你说你的目标是Android。这里有很多问题,所以我将从顶部开始。

E1026找不到文件Unit2.dfm

我的代码中没有看到Unit2的任何引用。这里没有任何东西表明这样的文件甚至首先存在。您的上述单元为TCPServer.pas,我在任何Unit2子句中都看不到uses。如果我不得不猜测,此单元最初名为Unit2.pas,但您将单元顶部的名称修改为TCPServer,而不指示项目名称更改。

我试图让它在Android设备上进行编译。

如果这是你的意图,你会走错路。您的上述单元适用于VCL应用程序,但VCL仅适用于Windows。它无法在任何移动平台上运行。

我想知道什么是dfm文件。它与fmx文件的区别如何

DFM文件与VCL应用程序绑定,这就是我知道您当前项目所针对的内容。 FMX文件与Firemonkey应用程序绑定,这是您需要以多平台为目标的应用程序。如果您要定位移动平台,则无法在同一应用程序中将两者混合在一起。 DFMFMX都是包含表单设计的文件(与代码相对),并且它们在两个框架之间有所不同。

我是delphi编程的新手。

我强烈建议您在尝试开始编码之前先退后一步阅读Delphi,特别是如果您要定位移动平台。

另一方面,您的单位在其使用条款中引用FMX单位,但请查看{$R *.dfm}行。这意味着它正在寻找DFM文件。我不知道你是如何获得这些代码的,但这是一个巨大的混淆,无法在任何一个框架下编译。