Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
delphihtml解析_Delphi_Html Parsing_Delphi Xe3 - Fatal编程技术网

delphihtml解析

delphihtml解析,delphi,html-parsing,delphi-xe3,Delphi,Html Parsing,Delphi Xe3,是的,我知道这个问题将与我的另一个问题非常相似 在我的另一个问题中,我问了关于htmlp的问题。 在我使用它之前,我试着使用德尔福自己的单位 我的代码是这样的: procedure DesectTable(L:TStrings); var doc:OleVariant; el:OleVariant; i:integer; begin doc := coHTMLDocument.Create as IHTMLDocument2; doc.write(L.Text); doc

是的,我知道这个问题将与我的另一个问题非常相似

在我的另一个问题中,我问了关于htmlp的问题。
在我使用它之前,我试着使用德尔福自己的单位

我的代码是这样的:

procedure DesectTable(L:TStrings);
var
  doc:OleVariant;
  el:OleVariant;
  i:integer;
begin
  doc := coHTMLDocument.Create as IHTMLDocument2;
  doc.write(L.Text);
  doc.close;
  for i:=0to doc.body.all.length-1 do // Breaks here
  begin
    el:=doc.body.all.item(i);
    if el.tagname='TR' then
    begin
      if (el.classname='even') or (el.classname='odd') then
        writeln(el.innerhtml);
    end;
  end;
end;
这是我在另一个项目中使用的代码,它确实起作用。
但在这个函数中,我得到一个错误:
Project F1Times.exe引发异常类evariantivalidoperror,并显示消息“variant operation无效”

有人知道这是什么原因吗?
为什么它发生在这里而不是我的另一个项目中?
是的,除了
for
循环内部发生的部分之外,这两个功能是相同的

我想知道,这太令人困惑了

编辑 如果有人想测试这个。可以找到我试图获取的html
为了便于测试,我保存了它,并简单地使用了stringlist.loadfromfile。

恐怕是因为您的代码错误,所以它似乎不太可能像您的“其他项目”中那样工作。见下文

procedure DesectTable(L:TStrings);
var
  doc:OleVariant;
  el:OleVariant;
  i:integer;
begin
  doc := coHTMLDocument.Create as IHTMLDocument2;
  doc.write(L.Text);
  doc.close;
 // for i:=0to doc.body.items.all.length-1 do // Breaks here
  for i:=0 to doc.body.all.length-1 do 
  begin
    el:=doc.body.all.item(i);
    if el.tagname='TR' then
    begin
      if (el.classname='even') or (el.classname='odd') then
        writeln(el.innerhtml);
    end;
  end;
end;

糟糕,这不是问题所在。我也会发布我另一个项目的代码。我现在会投票,接受一个答案会让这个问题看起来已经解决了,但它还没有解决。也许你可以再次删除这个编辑,并在你的另一个问题中处理这个问题。在你请求帮助的人下载你的代码、调试代码并发布答案后,他们可能会不厌其烦地更改问题,这对他们来说是一种不礼貌的行为!你指的是哪个编辑?你是说我另一个项目的例子?是的,你另一个项目的代码。其中一个问题(它甚至不会编译)与您在这个问题中第一次问到的问题无关?问题中的代码与答案中的代码相同。在这篇文章中,你在问什么问题?@RobKennedy我在我的代码中尝试了很多方法来解决这个问题,但无意中发布了无效的代码。MartynA认为这就是问题所在,并将其作为答案发布。然后我在这里更正了我的代码。我在这篇文章中问的问题是,是什么导致了这个错误,以及如何修复它。