AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel-Funktion im Hintergrund ablaufen lassen

Ein Thema von Delphi-Narr · begonnen am 11. Dez 2009 · letzter Beitrag vom 16. Dez 2009
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

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

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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz