Yritin tässä saada ohjelman laskemaan... Ja onnistuinkin...
Sain ohjelman muuntamaan tekstiä kelvollisiksi luvuiksi käyttämällä Val funktiota... Se toimii sinänsä ihan hyvin, mutta se hyväksyy desimaalierottimeksi vain ja ainoastaan pisteen, ei siis pilkkua...
ohjeista kaivoin tälläisen pätkän:
"Note The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications, use CDbl or CInt instead to convert a string to a number."
Tuossa todetaankin, että Val tunnistaan vain pisteen (.) desimaalierottimeksi... ja jos tarvitaan erilaisia desimaalierottimia, niin sitten pitäisi string -> numero muunnoksiin käyttää CDbl tai CInt ... Mutta jostain syystä tuo ei vain toimi...
Siis jos yritän käyttää vaikka tuota CDbl samaan tapaan kuin sitä Val systeemiä, niin kone vain tuuttaa erroria.
"An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll
Additional information: Cast from string "TextBox1" to type 'Double' is not valid."
Miten saisin koneen ymmärtämään pilkkua? Val ei ilmeisesti sitä ymmärrä, ja CDbl ei näytä toimivan, vaikka ohjeet antavat ymmärtää, että sen pitäisi pystyä juuri tuohon.
desimaaleja...
6
527
Vastaukset
- juport
No tuosta virheilmotuksesta päätellen koitat castaa merkkijonon "TextBox1" joksikin luvuksi. Missähän numerojärjestelmässä tuollaisen pitäisi toimia?!?!?
- ...
Pilkkua voi käyttää textboxissa desimaaliosan erottamiseen, jos esim. tekee aliohjelman, jolla tutkii textboxin sisällön merkki merkiltä. Aliohjelmassa desimaalipilkku pisteeksi ja muunnetun merkkijonon palautus.Val-funktiota voi käyttää aliohjelmaa kutsuvassa funktiossa tekstin muuttamiseksi luvuksi.
- -jk-
Jos TextBox1:n sisältö on numeroita:
Dim a As String
Dim b As Double
a = TextBox1.Text
b = Convert.ToDouble(a) - Petri_Petri
Voithan myös ennen val-muutosta muuttaa tekstissä olevan pilkun pisteeksi.
Tai ehkä kätevämpää, että teet funktion, joka tekee tuon muutoksen ja palauttaa numeron.
Function Palautanro#(byval NroTekstinä$)
dim i
i=instr(1,NroTekstinä$,",") ' Onko tekstissä pilkkua
if i then mid$(NroTekstinä$,i,1)="." ' jos tekstissä on pilkku, muutetaan se pisteeksi
Palautanro#=val(NroTekstinä$)
End Function - .net
Kiitokset neuvoista.
Tällä kertaa vain satuin jo keksimään ratkaisun itsekin...
If IsNumeric(TextBox1.Text) = True Then
Luku1 = TextBox1.Text
End if
Tuollaisella koodilla sain textboxin sisällön luettua numeroina... - pitkonen
CDbl ymmärtää pilkun desimaalierottimena jos se on määritelty maa-asetuksissa erottimeksi.
Tämä pilkku/piste -erotinsysteemi on kyllä yksi riesa ms:n kehittimissä. Osa funktioista käyttää aina pistettä ja osa käyttää maa-asetuksissa määrättyä erotinta.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Maahanmuuttajien vaikutus Suomen valtiontalouteen positiivinen
Maahanmuuttajat maksavat enemmän tuloveroja kuin saavat tulonsiirtoja. Eroavat persuista tässä suhteessa. Persuista o3494716Olen Päivi Räsäsen puolella
En oe uskovainen enkä kristillisdemograattikaan mutta onhan tuo naurettavaa laittaa Päivi syylliseksi omasta mielipit4332879Ukrainan tiedustelun huippupotti - Iski ensin yhteen satamaan, sitten toiseen
Ukrainan tiedustelupalvelu SBU kertoo johtaneensa operaatiota, jossa on isketty drooneilla Venäjän tärkeimpiin satamiin1302569Ulkomaalaistaustaiset tulevat kalliiksi yhteiskunnalle.
Selvitys: Ulkomaalaistaustaiset saivat selvästi enemmän työttömyysetuuksia ja toimeentulotukea kuin suomalaistaustaiset.1802483Nuhteettomia edustajia
Korkein oikeus tuomitsi Päivi Räsäsen kiihottamisesta kansanryhmää vastaan Kansanedustaja Päivi Räsästä (kd.) vastaan no2232455"Mieheksi ja naiseksi hän heidät loi."
Räsäsen tuomio on iso harppaus woke-valtioksi. – Tässä maassa on nyt selvästi kiellettyjä sanoja ja ajatusrikoksia. –431553Päivi Räsänen tuomittiin rikoksesta...
...kiihottamisesta kansanryhmää vastaan. Tuskin tajuaa silti vieläkään, että raamattu ei ole lakikirja. https://yle.fi/a5791469Korkein oikeus antaa Räsäselle vastauksen klo 9. Varmaan vapautus
Miten veikkaat että Päiville käypi? Päivi pitää lehdistökonferenssin klo 9.30. Koko media on läsnä. 7 v taistelu on ohii4471290Huumeliika mellastaa Suomussalmella
Varastanut S-marketissa, jopa kolme kertaa päivässä. Päätekijä pitänyt kuumeorjanaan naistaan useita vuosia. Mies potki141253Ihana sinä (m)
Oispa kiva nähdä sua. Uskomatonta, miten paljon sä pyörit mun ajatuksissa. Oonkohan mä sun mielessä? Haluaisitko nähdä v411023