IXMLNode

1 отговора 69 прегледа
#1

IXMLNode

Вижте този код:

procedure TForm1.btnTest3Click(Sender: TObject);
var
a: IXMLNode;

function CreateParagraph(const StyleClass: DOMString = 'Normal'): IXMLNode;
begin
Result := NewXMLDocument.CreateNode('para');
Result.Attributes['styleclass'] := StyleClass;
end;

begin
a := CreateParagraph;
//a := NewXMLDocument.CreateNode('para');
//a.Attributes['styleclass'] := 'NormalTH';

a.AddChild('abc'); //exception
end;

При опит за добавяне на дъщерен елемент към а възниква изключение. Атрибути, обаче, могат да се добавят. Ако реда "a := CreateParagraph;" се замени с долните два, които са закоментирани, всичко е наред. Стигам до извода, че когато присвоим на а стойност, върната от функция, не може да и се добавят дъщерни елементи. Но защо е така? Има ли нещо общо с интерфейсите?

Отговор
в отговор на Da Playa #2

Re: IXMLNode

Защо не опиташ това:

function CreateParagraph(const StyleClass: DOMString = 'Normal'): IXMLNode;
var
b: IXMLNode;
begin

try
b := NewXMLDocument.CreateNode('para');
b.Attributes['styleclass'] := StyleClass;
except
b:=nil;
end;

Result:=b;
end;

Отговор