Hej CDbl vill ha strängen med det decimaltecken som finns i Windows. Har din text alltid . som decimaltecken? Finns säkert snyggar lösningar, men här kommer en riktig fuling som ersätter . med det tecken som är valt i Windows. Läste om följande i forumet: Tack Johan <b>Vad f-n är Cxxx() ??</b> >Vad f-n är Cxxx() ?? Ja det är en djä... soppa som Vi alla slitet med. HejHantera tal som text beroende på nationella inställningar
Undrar hur man smidigast överstätter ett decimaltal i text (string) till ett tal...
Öh.. Nja alltså, problemet är att talet blir olika beroende på om användaren har "." eller "," som decimaltecken i Windows internationella inställningar...
Ex:
strTal = "000200.333"
dblTal = Cdbl(strTal)
Ger dblTal värdet 200.333 eller 200333 beroende på inställning i Windows...
Hur kommer man ifrån detta problem smidigast??Sv: Hantera tal som text beroende på nationella inställningar
dblTal = CDbl(Replace(strTal, ".", Format("0", ".")))
/JohanSv: Hantera tal som text beroende på nationella inställningar
"Bättre är att använda funktioner som Cxxx() i VB som stödjer internationella inställningar i stället för att använda Val() eller liknande. "
Vad f-n är Cxxx() ??Sv:Hantera tal som text beroende på nationella inställningar
Det bör fungera då det alltid är "." i indata!
Mvh BNSv:Hantera tal som text beroende på nationella inställningar
Gissar att man syftar på funktioner som CDbl och CInt t.ex.
/JohanSv:Hantera tal som text beroende på nationella inställningar
CDbl, CInt, CLng, CStr etc
Om du skall konvertera värden som följer de nationella inställningarna använder du Cxxx funktionerna.
Skall du konvertera saker som alltid är oberoende av de nationella inställningarna använder du
Val() och Str()Sv: Hantera tal som text beroende på nationella inställningar
Varför Why ¿por qué? !? kan Vi inte enas om att (.) punkt skall vara internationell decimalavskiljare ?
I programmeringens barndom använde jag denna kodslinga
i början för att kolla användarens internationella inställning, och satte en flagga för det.
Numera kör jag alltid Val(...) Str(...)
<code>
Dim test As String
test = Format$(0#, ".")
Select Case Left$(test, 1)
Case ","
MsgBox "," & " komma"
'do youre stuff ex. Replace
Case "."
MsgBox "." & " punkt"
'do youre stuff ex. Replace
End Select
</code>Sv:Hantera tal som text beroende på nationella inställningar
Ok, tack för förtydligandena kring Cxxx.
Instämmer att "." är det som fungerar bäst, enligt mina erfarenheter iaf.
Men fortfarande får ju inte mina program hänga sig när någon annan kör dom, bara för att dom har andra inställningar i Windows...
/BN