Avatar billede themaster Nybegynder
25. september 2003 - 16:15 Der er 10 kommentarer og
1 løsning

Replace() punktum som komma i regneenhed

Hej Eksperter

Jeg har et problem. Jeg har lavet et lille program i VB 6.0 som regner nogle fysiske størrelser ud. Den vil bare ikke godtage komma. (eks. 0,15)
Der i mod vil den gerne regne med punktum. (eks. 0.15)
Den laver det bare om til komma efter udregningen det er lidt mærkeligt.

I kan lige downloade koden og programmet her:
www.the4horsemen.dk/fyform.rar
Så kan i jo se det med egne øjne.

På forhånd tak, themaster
Avatar billede jennemaan Nybegynder
25. september 2003 - 16:24 #1
Check hjælpen om Val funktionen:

"Note  The Val function recognizes only the period (.) as a valid decimal separator. "

Men da du har , som decimalseperator på dit system (danske instillinger) bliver værdien af val(2.3) skrevet ud som 2,3. Da Val kun accepterer . som decimalseperator får du problemet i andet gennemløb...

Så det er ikke spor mærkeligt ;o)

/Jennemaan
Avatar billede nmh Nybegynder
25. september 2003 - 16:24 #2
Det skyldes, en manglende konsekvens i programmet.
(Det findes flere steder ho Microsift).
Du må selv sørge for at lave tingene om.
Replace-funktionen kan bruges.

MsgBox 2.5
udskrives som 2,5
MsgBox "2.5" går godt
MsgBox "2,5" går godt.
men msgbox 2,5
går galt.
Avatar billede themaster Nybegynder
25. september 2003 - 16:25 #3
ok.... men hvad kan jeg gører for at det virker....er der noget alternativ??
Avatar billede nmh Nybegynder
25. september 2003 - 16:26 #4
De samme problemer findes i VBscript.
Avatar billede nmh Nybegynder
25. september 2003 - 16:27 #5
Du må sørge for at lave , til . inden du bruger eval eller andre former for udregning.
x="123,456"
x=replace(x,",",".")
Avatar billede jennemaan Nybegynder
25. september 2003 - 16:28 #6
Det er ikke et problem eller en inkostistens. Det er fordi du bruger val funktionen forkert...

nmh > det er ikke manglende konsekvens i programmet, det er manglende konsekvens FOR programmøren :) (jeg havde fyret ham på stedet :) )

/Jennemaan
Avatar billede themaster Nybegynder
25. september 2003 - 16:28 #7
til nmh >> jeg er newbie...kan du ikke lige uddybe
Avatar billede nmh Nybegynder
25. september 2003 - 16:29 #8
Internt bruges decimalpunktum. Der er kun problemer i forbindelse med ind og udlæsning af data, og så er det dit ansvar at formatere rigtigt.
Avatar billede jennemaan Nybegynder
25. september 2003 - 16:32 #9
Private Sub regnud_Click()
tal1 = Val(replace(tal1.Text,",",".")
tal2 = Val(replace(tal2.Text,",",".")
densitet = tal1 / tal2
ohm = tal1 * tal2
komma = ","
punkt = "."

If ohms = True Then
result.Text = Str$(ohm)

End If

If dens = True Then
result.Text = Str$(densitet)

End If

End Sub

grimt men virker :)

/Jennemaan
Avatar billede themaster Nybegynder
25. september 2003 - 16:40 #10
takker... her er lidt points
Avatar billede nmh Nybegynder
25. september 2003 - 16:45 #11
Der er tale om manglende konsekvens.
Konsekvens er, at man overalt benytter samme notation mht . eller komma.
Det skal gælde både internt og eksternt ved udskrift.
Der er således ingen problemer, hvis man arbejder med en maskine, der er indstillet til ameriskansk eller engelsk standard.
Der er alt konsekvent.
Nu er der i en DK-maskine en sær blanding.
2*2.5 er 5
men 2*Cdbl("2,5") er 5 mens 2*Cdbl("2.5") er 50.
Det er da ikke logisk.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester