Autor Beitrag
boebel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 7, Microsoft Visual C# 2010
BeitragVerfasst: Mo 20.01.03 15:08 
Hi alle,

Ich kenn mich nicht gut aus mit Delphi, darum weiss ich auch nicht in welche Sparte ich da posten soll. :oops:

Ich habe aber mit Mühe und Not ein kleines Programm "auf die Beine gestellt", dass eine Währung mit Wechselkurs umrechnet, die MWSt. von 7.6% (Schweiz ;-)) und 10% Marge dazurechnet. Das ganze sieht ca. so aus:
ausblenden Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);					


Soweit, so gut! Ich versuchte das Ergebnis auf zwei Stellen genau zu Runden, leider klappt das nicht so wie ich will.

Hat jemand eine Lösung für mich?
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 20.01.03 15:12 
Hallo,

guck mal in FAQ ;).

Gruß
Klabautermann
boebel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 7, Microsoft Visual C# 2010
BeitragVerfasst: Mo 20.01.03 15:32 
danke, hab ich bereits gesehen. ich habe diese function eingefügt, sowie die unit "math" in die uses-klausel geschrieben.

Leider weiss ich nicht genau, wie ich diese function "Runden" in den Code einfügen soll

ausblenden Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);					
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 20.01.03 15:51 
Hallo,
boebel hat folgendes geschrieben:
Leider weiss ich nicht genau, wie ich diese function "Runden" in den Code einfügen soll
ausblenden Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);					

Da du das ergebnis Runden willst, müsste das so aussehen:
ausblenden Quelltext
1:
Label1.caption:=floattostr(Runden((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100, 2));					


Gruß
Klabautermann
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.01.03 16:02 
Kuck dir auch in der Hilfe mal Format an.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 20.01.03 16:21 
Hallo,
Luckie hat folgendes geschrieben:
Kuck dir auch in der Hilfe mal Format an.

Wobei format meines Wissens nach Abschneidet und nicht Rundet.

Gruß
Klabautermann
boebel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 7, Microsoft Visual C# 2010
BeitragVerfasst: Mo 20.01.03 16:45 
sorry, mit dem format funktioniert das ganze nicht richtig.

Danke, Klabautermann!

Mit der der function "Runden" und deinem Code funktionierts! ;-)


Ist es möglich, die zweite Stelle nach dem Komma auf 0 oder 5 zu runden?

Beispiel:
12.49 oder weniger wird abegrundet auf 12.0
12.5 wird nicht verändert: 12.5
12.51 oder mehr wird aufgerundet: 13

oder wäre das zu aufwendig?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.01.03 17:00 
Klabautermann hat folgendes geschrieben:
Hallo,
Luckie hat folgendes geschrieben:
Kuck dir auch in der Hilfe mal Format an.

Wobei format meines Wissens nach Abschneidet und nicht Rundet.

Gruß
Klabautermann

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  s : String;
begin
  s := Format('%0.2f', [125.562]);
  ShowMessage(s);
  s := Format('%0.2f', [125.567]);
  ShowMessage(s);

Ergebnis:
1. 125,56
2. 125,57

q.e.d.
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Mo 20.01.03 17:38 
Nur rein aus Interesse, wäre RoundTo nicht die bessere Wahl?

Dann wäre der Code der folgende:
ausblenden Quelltext
1:
Label1.Caption := FloatToStr(RoundTo((((StrToFloat(Einkaufspreis.Text)* StrToFloat(Wechselkurs.Text))*1.10)*107.6)/100, -2));					


Das hat doch eigentlich den selben Effekt und benötigt auch nur die Unit Math.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.01.03 17:40 
Ich würde Format vorziehen: Keine extra Unit einbinden, und mann kann es besser formatieren, mit tausender Trennzeichen usw.
boebel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 7, Microsoft Visual C# 2010
BeitragVerfasst: Di 21.01.03 13:28 
Danke an alle die hier teilgenommen, und mir somit sehr geholfen haben.

+ ein besonderes Dankeschön an Klabautermann, der zeitlich gesehen, sehr schnell Lösungen angeboten hatte :D

gruss boebel