Entwickler-Ecke

Sonstiges (Delphi) - Währungsformat


COMMANDER86 - Fr 14.10.05 17:04
Titel: Währungsformat
Hallo.

Ich habe eine Paradox-Tabelle in der Werte im Währungsformat eingetragen werden. Das Problem ist, dass die Werte problemlos ausgegeben werden, allerdings kann ich Sie nicht wirklich verrechnen. Wie kann ich zwei oder mehr Werte im Währungsformat verrechnen? StrToFloatF usw. tut's nicht!

Mit Dank im Voraus

COMMANDER86


alzaimar - Sa 15.10.05 09:46

Was siehst Du denn, wenn Du z.B. das hier machst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Var
  a : Double;

Begin
  a := MyParadoxCurrencyField.AsFloat;
  showmessage (FormatFloat ('#0.0000',a));
End;


Heiko - Sa 15.10.05 10:52

Oder nimm nur Format. Das dürfte eigentlich funktionieren.


alzaimar - Sa 15.10.05 10:58

Er meint, er kann damit nicht rechnen. Wenn bei FormatFloat oder Format oder FloatToStr oder egal was irgendetwas sinnvolles rauskommt, dann kann er auf die ParadoxCurrency Felder zugreifen. Wenn nicht, würde ich ihm einen 'Parser' vorschlagen. Na, eine kleine Funktion, die aus dem Währungsstring eine Zahl macht.


COMMANDER86 - So 16.10.05 13:04

Sry.... aber ich habe das jetzt voll nicht gerafft! Wenn ich bspw.:


Delphi-Quelltext
1:
Edit1.text:=FloatToStrF(StrToFloat(DBEdit1.text)+StrToFloat(DBEdit2.text),fffixed,20,2);                    


mache funktioniert das, wenn ich die Tabellenspalte als "alpha" oder "numerisch" deklariere. Wenn ich das Währungsformat nehme, tut das den Teufel.

Ich möcht nur wissen, ob ich in der Berechnung was ändern muss, oder ob der Befehl falsch ist.

Danke, mfG

COMMANDER86


alzaimar - So 16.10.05 13:32

Wieso gehst du über die Text-Eigenschaft des DBEdit-Controls, und nicht einfach über den Feldinhalt?
Du hast eine Tabelle T. Jede Tabelle (TDataset) hat einen Datensatzzeiger, der zeigt auf den aktiven Datensatz. Die datensensitiven Controls (TdbEdit etc.) beziehen ihre Information aus dem TDataset und stellen das jeweils aktuelle Element dar.

Über DBEdit.Text greifst Du doch auf die textuelle Repräsentation des Feldes zu. Wenn Du z.B. ein TCurrencyField hast, und hast z.B. eingestellt, die Währung mit anzuzeigen, dann ist DBEdit.Text = '123,00 €', oder nicht? Daraus eine Floatzahl zu machen, geht eben mit StrToFloat nicht.

Versuche, die Felder direkt zu verwenden. Du kannst Dir die Felder persistent erzeugen, indem Du auf die Tabelle rechtsklickst und über den 'Field-Editor', den Menüpunkt 'Add all Fields' (in deutsch weiss ich nicht, wie das heisst).


COMMANDER86 - So 16.10.05 23:17

Puh.... kann man denn das "€" ausblenden, die Zahl verrechnen und wieder einblenden? Und mal unter uns: Was sind "Datensatzzeiger" und "datensensitive Controls"? Ich denke ich sollte nichts verwenden, was ich nicht kenne, sonst verlier ich den Überblick... (Watt der Buur nit kennt, datt frisst er net!)

MfG

COMMANDER86


alzaimar - So 16.10.05 23:48

Datensensitive Controls ist ein TDBEdit, TDBGrid etc. Alle Edits, die mit einer Datasource verbunden sind.
Stell Dir ein TDataset als Tabelle vor, und der Datensatzzeiger zeigt auf den aktuellen Datensatz, also das, was Du im TDBEdit siehst.

Rechne einfach mit den Feldern. Wenn Du das nicht kennst, such nach Tutorials hier. Davon gibt es reichlich. Es ist sehr wichtig für gutes Programmieren, die Philosphie der Datasets, Felder etc. zu verstehen.