【发布时间】:2016-03-16 00:42:19
【问题描述】:
我有一个从 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 and Unit2.fmx )并将上述文件粘贴到Unit2.pas中。
当我编译项目时出现错误
E1026 File not found Unit2.dfm
我是 delphi 编程的新手。我想知道dfm 文件是什么。它与 fmx 文件有何不同,这似乎是在我的 IDE 上创建表单的正确方法。我正在使用 Embarcadero® Delphi 10 Seattle
【问题讨论】:
-
我有点困惑。 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 Forms 应用程序。您需要从头开始一个新的 Firemonkey Multi-Platform 应用程序,并在那里重新编写上面的代码。但同样,在深入研究之前,您还有很多学习要做。在你还不知道如何踩水之前,你就已经潜入深渊,你肯定会淹死的。