Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Excel-Funktion im Hintergrund ablaufen lassen

  Alt 13. Dez 2009, 19:10
Delphi-Quellcode:
procedure TForm1.UpdateFromXML(const data: string; dataIsFile:Boolean);
var
   document : IXMLDOMDocument2;
   node, node2 : IXMLDOMNode;
   ElementCube : IXMLDOMElement;
   i : Integer;
   currency : string;
   rate : Double;
begin
   document := CoDOMDocument40.Create;

   if dataIsFile then
      document.load(data)
   else
      document.loadXML(data);

// CheckDocumentError(document);


   node2 := document.documentElement;
   node := node2.lastChild;
// node := document.documentElement.selectSingleNode('//Cube');
   node := node.firstChild;

   // Schleife über alle vorhandenen Währungen
   for i := 0 to node.childNodes.length-1 do
   begin
      ElementCube := node.childnodes.item[i] as IXMLDOMElement;
      currency := ElementCube.getAttribute('currency');
      rate := ElementCube.getAttribute('rate');
      UpdateCurrency(currency, rate);
   end;

end;

Dies ist ja dein Code, data muss also der Dateipfad+Name sein. Also praktisch Ordner/dateiname.xml

So, ich hab das auch mal gemacht. Bei mir kommt allerdings eine Zugriffsverletzung:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
node:IXMLDOMNode;
Element:IXMLDOMELEMENT;
begin
     XMLDokument:=CoDOMDocument40.Create;
     XMLDokument.loadXML('datafiles/euroxref-hist.xml');
     node := XMLdokument.documentElement.selectSingleNode('//Cube');
     Element:=node.childnodes.item[1] as IXMLDOMElement;
end;
variable i ist für spätere Schleife(n)...

Wenn ich dann auf besagten Button klicke, wird die 3. Zeile nach Begin (node := ...) markiert und die Zugriffsverletzungsnachricht

Modul 00442242 Adresse 00000000

erscheint. Ich seh den Unterschied nicht genau... Ok, habe andere Bezeichnungen aber sonst müsste alles gleich sein, oder?
Habe das Tutorial hier mal gelesen, aber ist ja etwas anders aufgebaut, also hab ich da so meine Probleme mit. Ich kann auch nicht dort kopieren, was dort steht, weil mir wieder mal zwei .pas Dateien fehlen...
  Mit Zitat antworten Zitat