我不知道为什么我在delphi上遇到这个错误:
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.
如果您发现代码中有任何错误,请告诉我,已经有一段时间了,因为我已经被困在互联网上。
我不知道造成这种情况的原因是我第一次使用这个组件。
答案 0 :(得分:2)
您展示的LeerXML例程不是TForm1类的方法,它是一个与之无关的独立程序。就编译器而言,这两者没有任何联系,这就是为什么它抱怨XmlDocument1是一个未知的标识符。编译器无法以您(错误地,来自编译器的pov)的方式看到连接。
从另一个角度来看,您的TForm1类有一个XMLDocument1成员和一个LeerXML方法。但LeerXML方法不是编译器抱怨的方法。我现在暂不再解释了,当你读到这个时,你应该感觉到一分钱......
顺便说一下,一旦你意识到问题是什么,你可能会意识到你所看到的错误是因为Delphi的一个限制是单通道编译器停止在第一个它遇到的错误。如果不是(单通,停止第一次错误)它可以做一个更有帮助的工作来确定问题到底是什么。