/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
VBA: Decimal- og tusindtalsseperator
Fra : Jesper Stocholm


Dato : 15-10-02 12:57

Hvordan kan jeg udtrække tegnet anvendt som decimalseperator og
tusindseperator ? Jeg kan hente brugerens LCID med

Private Declare Function GetSystemDefaultLCID& Lib "kernel32" ()
Private m_lLocaleUserDefaultLCID As Long

sub getLocale()
   m_lLocaleUserDefaultLCID = GetUserDefaultLCID()
end sub

Men da nogle brugere har dansk LCID men har ændret decimalseperator fra det
danske komma til det engelske punktum, så er det ikke helt nok at kigge på
LCID for at finde ud af, hvad den enkelte bruger anvender.

Hvordan gør jeg det ? Platformen er Windows 2k eller Windows XP



--
Jesper Stocholm
http://stocholm.dk
Overvejer du at købe bøger ved saxo.dk ? Kig først på
http://www.firmcheck.dk/Info.asp?website=www.saxo.dk

 
 
Tomas Christiansen (15-10-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 15-10-02 13:28

Jesper Stocholm skrev:
> Hvordan kan jeg udtrække tegnet anvendt som decimalseperator og
> tusindseperator ?

The quick and dirty way:

Sub LocalNumberFormat _
(ByRef sDecimal As String, ByRef sThousand As String)
sDecimal = Mid(Format(1.1, "0.0"), 2, 1)
sThousand = Mid(Format(1000, "0,000"), 2, 1)
End Sub

-------
Tomas


Jesper Stocholm (15-10-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 15-10-02 14:58

Tomas Christiansen wrote :

> Jesper Stocholm skrev:
>> Hvordan kan jeg udtrække tegnet anvendt som decimalseperator og
>> tusindseperator ?
>
> The quick and dirty way:
>
> Sub LocalNumberFormat _
> (ByRef sDecimal As String, ByRef sThousand As String)
> sDecimal = Mid(Format(1.1, "0.0"), 2, 1)
> sThousand = Mid(Format(1000, "0,000"), 2, 1)
> End Sub

tusind tak ... men der er da principielt ikke nogen grund til at kalde
den for "dirty" - så vidt jeg kan se, så formatterer en streng ud fra
system-indstillingerne - og derefter finder komma etc. Det er vel i
princippet ikke anderledes end at finde oplysningerne direkte i OS.



--
Jesper Stocholm
http://stocholm.dk
Overvejer du at købe bøger ved saxo.dk ? Kig først på
http://www.firmcheck.dk/Info.asp?website=www.saxo.dk

Tomas Christiansen (15-10-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 15-10-02 21:09

Jesper Stocholm skrev:
> tusind tak ... men der er da principielt ikke nogen grund til at
kalde
> den for "dirty"

Den er "quick" fordi det er en ret let løsning - både at implementere
og at forstå.

Den er "dirty" fordi den benytter sig af sideeffekter, og den kræver
at man holder tungen lige i munden, når man vælger hvilke tal, som
skal formatteres. Hvis dette tal bliver ændret af en ikke-forstående,
fejler funktionen ikke, men giver måske altid/måske nogle gange et
forkert resultat.

Den "rigtige" løsning er naturligvis at finde det rigtige API,
men....... nogle gange er livet for kort til API-kald!

-------
Tomas


Villy Jensen (15-10-2002)
Kommentar
Fra : Villy Jensen


Dato : 15-10-02 13:52

> Hvordan kan jeg udtrække tegnet anvendt som decimalseperator og
> tusindseperator ?

> Men da nogle brugere har dansk LCID men har ændret decimalseperator fra
det
> danske komma til det engelske punktum, så er det ikke helt nok at kigge på
> LCID for at finde ud af, hvad den enkelte bruger anvender.
>
> Hvordan gør jeg det ? Platformen er Windows 2k eller Windows XP



Jeg klarer det lille nummer i WIN98 og i WINNT ved at sætte _2_ værdier
i registreringsdatabasen:


<Begin file Set_DK_dp.reg>
REGEDIT4

[HKEY_CURRENT_USER\Control Panel\International]
"sDecimal"="."
"sThousand"=" "
<End file Set_DK_dp.reg>


<Begin file Set_US_dp.reg>
REGEDIT4

[HKEY_CURRENT_USER\Control Panel\International]
"sDecimal"=","
"sThousand"=" "
<End file Set_US_dp.reg>

Du skal bare og læse hvad brugeren har sat de to værdier til...!

Mvh Villy
http://hjem.get2net.dk/villy



Keld Sørensen (16-10-2002)
Kommentar
Fra : Keld Sørensen


Dato : 16-10-02 07:52

En formateret string med et beløb, f.eks. 1.234,56, kan
konverteres til et tal med CDlb("1.234,56") til 1234.56 og
herefter anvendes i en beregning.

mvh
Keld Sørensen

"Villy Jensen" <vje@e-mail.dk> skrev i en meddelelse
news:zAZq9.62$6T.1685@news.get2net.dk...
> > Hvordan kan jeg udtrække tegnet anvendt som decimalseperator og
> > tusindseperator ?
>
> > Men da nogle brugere har dansk LCID men har ændret decimalseperator fra
> det
> > danske komma til det engelske punktum, så er det ikke helt nok at kigge

> > LCID for at finde ud af, hvad den enkelte bruger anvender.
> >
> > Hvordan gør jeg det ? Platformen er Windows 2k eller Windows XP
>
>
>
> Jeg klarer det lille nummer i WIN98 og i WINNT ved at sætte _2_ værdier
> i registreringsdatabasen:
>
>
> <Begin file Set_DK_dp.reg>
> REGEDIT4
>
> [HKEY_CURRENT_USER\Control Panel\International]
> "sDecimal"="."
> "sThousand"=" "
> <End file Set_DK_dp.reg>
>
>
> <Begin file Set_US_dp.reg>
> REGEDIT4
>
> [HKEY_CURRENT_USER\Control Panel\International]
> "sDecimal"=","
> "sThousand"=" "
> <End file Set_US_dp.reg>
>
> Du skal bare og læse hvad brugeren har sat de to værdier til...!
>
> Mvh Villy
> http://hjem.get2net.dk/villy
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste