以下是我正在运行的代码,我收到错误:
我已经检查了uses
,这很好。
我认为我AddSimpleElement()
程序的参数存在问题。
unit Unit9;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleServer,
QBXMLRP2Lib_TLB, MSXML, XMLDoc;
type
TForm9 = class(TForm)
btnSubscribe: TButton;
btnUnsubscribe: TButton;
rp21: TRequestProcessor2;
private
{ Private declarations }
procedure AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
public
{ Public declarations }
end;
var
Form9: TForm9;
implementation
{$R *.dfm}
procedure AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
var
newElem : IXMLDOMElement;
begin
newElem := doc.createElement(name);
newElem.text := value;
parent.appendChild(newElem);
end;
end.
答案 0 :(得分:3)
以下是我正在运行的代码
我认为“运行”不是正确的词,因为你所展示的代码甚至不会编译,更不用说运行了。
在代码的这一部分
type
TForm9 = class(TForm)
[...]
procedure AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
[...]
您将AddSimpleElement
声明为TForm9类的方法,但在此代码中
procedure AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
var
newElem : IXMLDOMElement;
begin
newElem := doc.createElement(name);
newElem.text := value;
parent.appendChild(newElem);
end
你没有定义TForm9的AddSimpleElement
的实现,这与你的想法相反。相反,您声明一个独立的过程AddSimpleElement,它与TForm9完全无关。将您的代码更改为
procedure TForm9.AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
var
newElem : IXMLDOMElement;
begin
[...]
您将提高代码编译的可能性。当然,可能还有其他问题。
不过,这是一种容易犯的错误,特别是在漫长的一天结束时。您可以通过使用IDE的“类完成”帮助来避免它。键入后 procedure AddSimpleElement(doc : DOMDocument40; parent : IXMLDOMElement; name, value : String);
在TForm9的类型声明中,如果按 Ctrl-Shift-C ,则IDE将生成该方法的(空)实现并将光标移动到该方法。
顺便说一句,如果你不介意我说,你的q的愚蠢部分包括完全无益的屏幕截图,但是在你的q中没有提到编译器在你尝试时会产生的错误消息的确切文本编译你的代码。在这种情况下,很明显一眼就会发现你的代码有什么明显的错误,但你真的应该尝试在这里寻求帮助时提供最好的信息。