2016-03-17 147 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();' –