Android `找不到E1026文件Unit2.dfm`
我有一个从internet复制的简单TCP服务器应用程序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
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多平台应用程序,然后在那里重新编写上述代码。但是再一次,在你潜入这个深渊之前,你还有很多要学的。在你还不知道如何踩水的时候,你就潜入了深水区,你肯定会淹死的。