2016-03-16 183 views
-4

我有一個簡單的TCP服務器應用程序,我從互聯網上覆制過來的。`E1026 File not found Unit2.dfm`

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.I一個形成不同的正在使用Embarcadero® Delphi 10 Seattle

+0

我有點困惑。 Firemonkey不使用'dfm'文件。它使用'fmx'文件。 'dfm'是特定於VCL框架的,僅適用於Windows。您需要在Firemonkey應用程序中實現此代碼。 –

+0

@JerryDodge - 什麼是Firemonkey?有了類似的(Unit1.pas和Unit1.fmx),我可以將它加載到Android中) – liv2hak

+0

根據這個和你以前的問題,我**高度推薦你在潛水之前研究更多,然後提問當你有問題時。 –

回答

4

基於我在你的代碼中看到,您使用的是VCL Forms Application工作,這是僅限Windows。但是你說你正在瞄準Android。這裏有很多問題,所以我會從頂部開始。

E1026找不到文件Unit2.dfm

我沒有看到在代碼Unit2任何引用。這裏沒有任何東西表明這樣的文件甚至存在於第一位。您上面的單位是TCPServer.pas,我沒有在任何uses條款中看到Unit2。如果我不得不猜測,這個單元最初被命名爲Unit2.pas,但是您將單元頂部的名稱修改爲TCPServer,而不指示項目名稱更改。

我試圖讓它在Android設備上編譯。

如果這是你的意圖,你會錯誤的方式。您的上述單位適用於VCL應用程序,但VCL僅適用於Windows。它不會在任何移動平臺上工作。

我想知道什麼是dfm文件。它是如何從一個FMX文件

一個DFM文件被綁定到一個VCL應用程序,這就是我知道這是你的當前項目的目標是什麼不同。一個FMX文件綁定到一個Firemonkey應用程序,這是您將需要針對多平臺。如果您的移動平臺是針對移動平臺的,則無法在同一應用程序中將兩者混合在一起DFMFMX都是包含表單設計(而不是代碼)的文件,它在兩個框架中有所不同。

我是delphi編程的新手。

我強烈建議您在嘗試開始編碼之前先退回到Delphi上閱讀,特別是如果您針對的是移動平臺。

另一方面,您的單位在其使用條款中指的是FMX單位,但請查看{$R *.dfm}的行。這意味着它正在尋找DFM文件。我不知道你是如何獲得這個代碼的,但是這是一個巨大的混亂,並且在兩個框架下都不可能編譯。