Delphi AddObject - 不添加对象

时间:2015-01-20 04:47:49

标签: string delphi

我被这个奇怪的问题困扰了。我将一个Memo.Lines作为TStrings传递给一个过程并用AddObject填充它。但是没有添加对象(由L := TURLLinkObject(AStrings.Objects [AStrings.Count -1])立即检查。(编辑:AddObject返回0,这是根据Delphi的Help添加的项的索引)

这是我的程序:

type
  TURLLinkObject = class(TObject)
    url,
    attr,
    name : string;
  end;

procedure getLinks(XMLNode: TNode; AStrings: TStrings; Match:string='');

var L : TURLLinkObject;
    i : integer;
    S : string;

begin;
  if XMLNode = nil then exit;

  if (XmlNode.NodeName = 'a') and (XmlNode As TElement).hasAttribute('href') then
  begin;
    L := TURLLinkObject.Create;
    L.url := (XmlNode AS TElement).getAttribute('href');
    L.attr := GetAttributesText(XmlNode);
    L.Name := 'Some Name';

    if (Match = '') or (pos(Match, L.url) <> 0) then
    begin;
       s := format('%s :: %s', [L.Name, L.url]);
       i := AStrings.AddObject(s, L);
       L := TURLLinkObject(AStrings.Objects[AStrings.Count -1]);
    end
    else
      L.Free;
  end;

  if XMLNode.hasChildNodes then
  begin
    for i:= 0 to XMLNode.childNodes.length-1  do
      getLinks(XMLNode.ChildNodes.item(i), AStrings, PartialMatchName);
  end;
end;

1 个答案:

答案 0 :(得分:6)

TMemo.Lines类型派生自TStrings,不支持Objects属性; Objects支持已在TStringList类型中实施,因此您无法将ObjectsTMemo.Lines一起使用。