【发布时间】:2020-03-31 08:50:53
【问题描述】:
所以我有一个程序,就是获取 dom 节点列表。
procedure TmainForm.getNodeListByClass(className:string; outputList:TStringList);
var
foundNode:TDomTreeNode;
foundNodesList:TStringlist;
begin
foundNodesList:=Tstringlist.Create;
foundNode:=nodeFindNodeByClassName(DomTree.RootNode,className);
if Assigned(foundNode) then
getNodeList(foundNode,foundNodesList);
outputList:=foundNodesList;
freeandnil(foundNodesList);
end;
还有一个正在使用它的程序
procedure TmainForm.getByXpathBtnClick(Sender: TObject);
var
temp:TStringlist;
begin
temp:=TStringlist.Create;
temp.Add('testval');
getNodeListByClass('table_input',temp);
memo1.Lines:=temp;
getNodeListByClass('left iteminfo',temp);
dbgForm.memo1.Lines:=temp;
getNodeListByClass('left',temp);
dbgForm.memo2.Lines:=temp;
freeandnil(temp);
end;
我真的不明白,为什么它不起作用,第一个过程的结果总是空的。 我发现,当第一个程序正在执行时,“foundNodesList”有正确的列表,并且将其设置为“outputList”也可以工作,但是一旦它返回到第二个程序(在“temp”列表中)它只是空的。 所以它从“test”中清除旧数据('testval'我一开始写的),但不添加第一个的结果。
有人能指出我正确的方向吗?
【问题讨论】:
标签: delphi procedure tstringlist