我被这个奇怪的问题困扰了。我将一个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;
答案 0 :(得分:6)
TMemo.Lines
类型派生自TStrings
,不支持Objects
属性; Objects
支持已在TStringList
类型中实施,因此您无法将Objects
与TMemo.Lines
一起使用。