Val(GetGadgetText(#Einsatz)) liefert 0

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Delle »

Hallo,

ich versuche eine Division von 2 Gadget-Werten:

anzahl=Val(GetGadgetText(#Einsatz))/Val(GetGadgetText(#Einkauf))

#Einkauf ist meistens 0,10 oder 0,20... also kein Integer.

Debug Val(GetGadgetText(#Einkauf)) liefert mit immer 0 zurück, sprich die Division geht deswegen schief ;)

Wie kann ich mir einen Komma-Wert zurückgegeben lassen?

Danke,
Delle
PB 6.21 | Win 11
Little John

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Little John »

Delle hat geschrieben:Wie kann ich mir einen Komma-Wert zurückgegeben lassen?
ValF() oder ValD()

Gruß, Little John
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von ThoPie »

Hallo,
versuche es mit ValF(ReplaceString(GetGadgetText(#Einsatz),",","."))
Es muss noch das "," durch einen "." ersetzt werden.

ThoPie
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Kiffi »

ThoPie hat geschrieben:Es muss noch das "," durch einen "." ersetzt werden.
nicht generell. Man muss dabei die Ländereinstellungen berücksichtigen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Delle »

Hm, wie kann es sein, dass hier 0 zurückgeliefert wird?

StringGadget(#Einkauf, 130, 30, 60, 20, "0.05")
Debug einkauf=ValF(GetGadgetText(#Einkauf))
PB 6.21 | Win 11
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Kaeru Gaman »

wie kann es sein, dass hier 0 zurückgeliefert wird?
... nunja, falls kein Error kommt, dann wird sozusagen der "Wert" der Prüfung
If einkauf = ValF(GetGadgetText(#Einkauf))
debuggt

gehe ich recht in der Annahme, dass du eigentlich das hier meinst:

Code: Alles auswählen

StringGadget(#Einkauf, 130, 30, 60, 20, "0.05")
einkauf = ValF(GetGadgetText(#Einkauf))
Debug einkauf
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Val(GetGadgetText(#Einsatz)) liefert 0

Beitrag von Bisonte »

Code: Alles auswählen

StringGadget(#Einkauf, 130, 30, 60, 20, "0.05")
einkauf = ValF(GetGadgetText(#Einkauf))
Debug einkauf
Mal so nebenbei... Muss nicht die Variable einkauf als Float deklariert werden, damit ValF auch Sinn macht und die Nachkommastellen angezeigt werden (bzw. damit man damit auch weiter rechnen kann) ?

ich meine dies ...

Code: Alles auswählen

StringGadget(#Einkauf, 130, 30, 60, 20, "0.05")
einkauf.f = ValF(GetGadgetText(#Einkauf))
Debug einkauf
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Currency

Beitrag von Kaeru Gaman »

yup, danke für den Hinweis.

@Delle
noch was:
für Currency-Werte solltest du nicht Float oder Double verwenden, sondern Fixkomma.
also Ganzzahl (Quad) verwenden und in 1/10 Cent rechnen, nur bei der Anzeige ein Komma einfügen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten