Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

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

Re: Excel-Funktion im Hintergrund ablaufen lassen

  Alt 14. Dez 2009, 18:48
Achso, ok. Jetzt habe ich die Datei eurofxref-hist.xml

Die ist so aufgebaut:
XML-Code:
<?xml version="1.0" encoding="UTF-8" ?>
- <gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
  <gesmes:subject>Reference rates</gesmes:subject>
- <gesmes:Sender>
  <gesmes:name>European Central Bank</gesmes:name>
  </gesmes:Sender>
- <Cube>
- <Cube time="2009-12-10">
  <Cube currency="USD" rate="1.473" />
  <Cube currency="JPY" rate="130.03" />
  <Cube currency="BGN" rate="1.9558" />
  <Cube currency="CZK" rate="25.705" />
  <Cube currency="DKK" rate="7.4417" />
  <Cube currency="EEK" rate="15.6466" />
  <Cube currency="GBP" rate="0.9043" />
  <Cube currency="HUF" rate="272.05" />
  <Cube currency="LTL" rate="3.4528" />
  <Cube currency="LVL" rate="0.7072" />
  <Cube currency="PLN" rate="4.1405" />
  <Cube currency="RON" rate="4.2382" />
  <Cube currency="SEK" rate="10.4367" />
  <Cube currency="CHF" rate="1.5113" />
  <Cube currency="NOK" rate="8.4355" />
  <Cube currency="HRK" rate="7.2668" />
  <Cube currency="RUB" rate="44.8505" />
  <Cube currency="TRY" rate="2.202" />
  <Cube currency="AUD" rate="1.6074" />
  <Cube currency="BRL" rate="2.5904" />
  <Cube currency="CAD" rate="1.5472" />
  <Cube currency="CNY" rate="10.0556" />
  <Cube currency="HKD" rate="11.4168" />
  <Cube currency="IDR" rate="13905.61" />
  <Cube currency="INR" rate="68.7" />
  <Cube currency="KRW" rate="1716.4" />
  <Cube currency="MXN" rate="19.0312" />
  <Cube currency="MYR" rate="5.0045" />
  <Cube currency="NZD" rate="2.0236" />
  <Cube currency="PHP" rate="68.075" />
  <Cube currency="SGD" rate="2.0473" />
  <Cube currency="THB" rate="48.793" />
  <Cube currency="ZAR" rate="11.0565" />
  </Cube>
- <Cube time="2009-12-09">
  <Cube currency="USD" rate="1.4768" />
  <Cube currency="JPY" rate="129.91" />
  <Cube currency="BGN" rate="1.9558" />
  <Cube currency="CZK" rate="25.749" />
  <Cube currency="DKK" rate="7.4416" />
  ...
  </Cube>
</cube>
Nicht zu jedem Datum ist jede Währung vorhanden. Im Optimalfall sollten es (Stand wie oben) 2802 Einträge sein. 20 Währungen aus dem ersten Cube sind in dieser Zahl vorhanden. Ich habe auch nicht nachgeprüft, ob bei älteren Daten andere Währungen sind. Ist auch ersteinmal unwichtig.
Also zur Auswahl stehen die aufgelisteten Währungen.
Erst muss also das Datum gesucht werden.
Hatte das bisher so, dass alle Daten durchsucht werden, solange das Datum2 (das aus der Datei) > ist als das aus der Datumsauswahl.
Dann wird die Variable i auf die Stelle gesetzt, ab wo der Kurs des eingegebenen Datums gilt.


Also

Eingabe: 27.10.2009


Datei:

0 -> 12.12.2009
1 -> 11.12.2009
2 -> 30.11.2009
3 -> 15.11.2009
4 -> 28.10.2009
5 -> 26.10.2009

als i erhalte ich also 5.

Jetzt müssen alle Unterpunkte von Cube[i] durchsucht werden, bis der Wert von currency gleich die angegebene Währung ist und dann muss die Variable Kurs auf den Wert vom Attribut "rate" gesetzt werden. Wenn die Währung nicht existiert, soll der Anwender dies mitgeteilt bekommen.

Könnte sich jemand die Zeit nehmen, mir mal zu erklären, wie ich das jetzt realisieren kann?
Liebe Grüße!
  Mit Zitat antworten Zitat