2016-03-17 185 views
0

上未說明的標識符,我不知道爲什麼我得到德爾福這樣的錯誤:聲明的對象

unit Unit1; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xml.xmldom, Xml.XMLIntf, 
    XMLDoc; 


type 
    TForm1 = class(TForm) 
    XMLDocument1: TXMLDocument; 
    ComboBox1: TComboBox; 
    Edit1: TEdit; 
    procedure ComboBox1Change(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    procedure LeerXML(); 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure LeerXML(); 
var 
Query : IXMLNode; 

begin 
    XMLDocument1.FileName := 'Query.xml'; <- RIGHT HERE SAYS "[dcc32 Error] Unit1.pas(36): E2003 Undeclared identifier: 'XMLDocument1'" 
end; 

procedure TForm1.ComboBox1Change(Sender: TObject); 
begin 
    LeerXML(); 
end; 

end. 

,如果你發現任何錯誤代碼,請告訴我,它已經有一段時間,因爲我已經一直被困在互聯網上。

我不知道是什麼造成這是我第一次使用這個組件。

回答

2

您所顯示的LeerXML例程不是您的TForm1類的方法,它是一個與其無關的獨立過程。就編譯器而言,這兩者沒有任何聯繫,這就是爲什麼它抱怨XmlDocument1是未知標識符。編譯器無法以您(錯誤地來自編譯器的pov)的方式來查看連接。

看着另一種方式,你的TForm1類有一個XMLDocument1成員和一個LeerXML方法。但是,LeerXML方法是而不是編譯器正在抱怨。我現在不會再解釋了,你應該感覺一分錢下降,因爲你讀到這...

順便說一句,一旦你已經意識到了什麼問題,你可能會明白,你的錯誤我們已經看到,Delphi是一個單通道編譯器,它遇到的第一個錯誤就停止了。如果不是(單程通過,停止第一次錯誤),它可以做更多有用的工作來確定問題究竟是什麼。

+0

即將'procedure LeerXML();'變爲'procedure TForm1.LeerXML();' –