Hallo,
ich bin schon einen Schritt weiter gekommen. Das Problem ist aber einen bestimmte 'rate' für einen gegebenen 'currency'-Wert zu ermitteln. Gibt es einen Weg direkt auf einen 'currency-Wert' zu gehen? d.h. diesen zu suchen?
Hier der Code:
Code:
var
Doc: TXMLDocument;
Stammknoten:IXMLNode;
begin
Doc := TXMLDocument.Create(Self);
Doc.LoadFromFile(ExtractFilePath(Application.exename) + '\test.xml');
Doc.Active := true; //kann beim Auslesen wegfallen
Stammknoten:=Doc.DocumentElement;
if Stammknoten =nil then
begin
ShowMessage('Stammknoten ist Nil! Abbruch!');
exit;
end;
ShowMessage(stammknoten.ChildNodes.Nodes[2].ChildNodes.Nodes[0].ChildNodes.Nodes[0].AttributeNodes.Nodes[0].NodeName); //Currency
ShowMessage(stammknoten.ChildNodes.Nodes[2].ChildNodes.Nodes[0].ChildNodes.Nodes[0].AttributeNodes.Nodes[0].NodeValue); //Currency=USD
ShowMessage(stammknoten.ChildNodes.Nodes[2].ChildNodes.Nodes[0].ChildNodes.Nodes[0].AttributeNodes.Nodes[1].NodeValue); //Rate-Wert!!!!
Mit dem Assistenten von TXMLDocument wie von 'DelphiSecurity' vorgeschlagen komme ich nicht recht weiter, wobei dieses vermutlich die schönste Lösung darstellt. Folgender Code erzeugt beim Zugriff auf den Wert immer eine
AV. Irgendetwas mache ich hier grundsätzlich falsch:
Code:
var
Env:IXMLEnvelopeType;
ICubeType: IXMLCubeType;
ICubeType2: IXMLCubeType2;
begin
XMLDocument1.LoadFromFile(ExtractFilePath(Application.exename) + '\test.xml');
XMLDocument1.Active:=TRUE;
ICubeType2.Currency:='RUB'; //Bei Zugriff=Crash