Android `找不到E1026文件Unit2.dfm`

Android `找不到E1026文件Unit2.dfm`,android,delphi,Android,Delphi,我有一个从internet复制的简单TCP服务器应用程序 unit TCPServer; interface uses System.SysUtils, System.Variants, System.Classes, FMX.Forms, FMX.Dialogs, IdBaseComponent, IdComponent, IdSocketHandle, IdCustomTCPServer, IdTCPServer, IdContext; type TForm2 = cl

我有一个从internet复制的简单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和Unit2.fmx)
,并将上述文件粘贴到
Unit2.pas

当我编译这个项目时,我得到了一个错误

E1026未找到文件Unit2.dfm


我是全新的德尔福编程。我想知道什么是
dfm
文件。它与
fmx
文件有何不同,后者似乎是在我的IDE上创建表单的正确方法。我正在使用
Embarcadero®Delphi 10西雅图

根据我在您的代码中看到的内容,您正在使用的是仅适用于Windows的
VCL表单应用程序
。但你说你的目标是安卓。这里有多个问题,所以我将从顶部开始

E1026文件找不到Unit2.dfm

我在您的代码中没有看到任何对
Unit2
的引用。这里没有任何东西表明这样一个文件甚至存在于最初的位置。您上面的单元是
TCPServer.pas
,我在任何
uses
子句中都没有看到
Unit2
。如果让我猜的话,这个单元最初的名称是
Unit2.pas
,但是您将单元顶部的名称修改为
TCPServer
,而没有指示更改名称的项目

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

如果这是你的意图,你就走错了路。上述装置适用于
VCL
应用程序,但
VCL
仅适用于Windows。它不会在任何移动平台上工作

我想知道什么是dfm文件。它与fmx文件有何不同

一个
DFM
文件绑定到一个
VCL
应用程序,这就是我如何知道您当前项目的目标。
FMX
文件绑定到Firemonkey应用程序,这是针对多平台的需要。如果您的目标是移动平台,则不能在同一应用程序中混合使用这两种技术。
DFM
FMX
都是包含表单设计(与代码相反)的文件,这两个框架不同

我对delphi编程是全新的。

我强烈建议您在开始编写代码之前,先退后一步,阅读Delphi,特别是当您针对的是移动平台时


另一方面,您的单位在其uses子句中引用了
FMX
units,但请看写有
{$R*.dfm}
的行。这意味着它正在寻找一个
DFM
文件。我不知道您是如何获得这段代码的,但这是一个巨大的混乱,在这两种框架下都无法编译。

我有点困惑。Firemonkey不使用
dfm
文件。它使用
fmx
文件
dfm
特定于VCL框架,该框架仅适用于Windows。您需要在Firemonkey应用程序中实现这段代码。@JerryDodge-什么是Firemonkey?基于这一点和您之前的问题,我可以将类似的(Unit1.pas和Unit1.fmx)加载到Android中,我强烈建议您在深入研究之前进行更多的研究,然后在遇到问题时提问。如果您使用Delphi,尤其是如果您打算针对Android,您必须知道Firemonkey是什么。这就是您正在使用的整个框架。传统的Delphi使用的VCL框架仅限于Windows,而FMX(Firemonkey)是一种新的框架,它可以针对多个平台。你不能把两者混为一谈。我的意思是,从技术上来说你可以,但这是一个完全不同的故事,与你的案件无关。表格并不重要。重要的部分是您正在编写的应用程序的类型。您的代码正在查找
dfm
文件这一事实告诉我您正在尝试编写一个仅适用于Windows的VCL表单应用程序。您需要从头开始启动一个新的Firemonkey多平台应用程序,然后在那里重新编写上述代码。但是再一次,在你潜入这个深渊之前,你还有很多要学的。在你还不知道如何踩水的时候,你就潜入了深水区,你肯定会淹死的。