为什么我在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.
如果您在代码中发现任何错误,请告诉我,自从我在互联网上陷入困境以来
已经有一段时间了。我不知道是什么原因造成的,这是我第一次使用此组件。
您展示的 LeerXML 例程不是 TForm1 类的方法,它是一个与它无关的独立过程。 就编译器而言,两者没有任何联系,这就是为什么它抱怨 XmlDocument1 是一个未知的标识符。 编译器无法像您(错误地从编译器的 pov 中)那样看到连接。
换个角度看,TForm1 类有一个 XMLDocument1 成员和一个 LeerXML 方法。 但是LeerXML方法并不是编译器抱怨的方法。 我现在不打算再解释了,当你读到这篇文章时,你应该感觉到一分钱在下降......
顺便说一句,一旦你意识到问题是什么,你可能会意识到你所看到的错误是由于Delphi是一个单通道编译器的局限性之一,它在遇到的第一个错误时停止。 如果不是(单次通过,在第一次错误时停止),它可以在确定问题真正是什么方面做得更有用。