Archief - [PROG][C#] Probleem met parsen van een textbox naar een decimal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

k3vin

Legacy Member
Ok ik heb een probleempje met het parsen van een string uit een tekstbox naar een decimal. Na wat zoeken op het internet heb ik nog niets gevonden. De code is
Code:
decimal.Parse(dlgArtikel.txtPri.Text)

Dit heb ik nodig omdat ik het in een klasse steek die een decimal verwacht. In deze klasse moet ook een long gestoken worden en daarbij werkt de code wel...

Code:
long.Parse(dlgArtikel.txtNum.Text)

Wat is er dan verkeerd aan de decimal code?

De code voor de volledige klasse oproeping:
Code:
artikel NieuwArtikel = new artikel(dlgArtikel.txtCat.Text, dlgArtikel.txtMer.Text,
                                                       dlgArtikel.txtNaa.Text, long.Parse(dlgArtikel.txtNum.Text),
                                                       decimal.Parse(dlgArtikel.txtPri.Text));

k3vin

Legacy Member
Zelfde error: "De indeling van de invoertekenreeks is onjuist."

MacK

Legacy Member
Staat er een komma in uw tekst, ipv van een punt (of omgekeerd)? Dat zou ook al eens problemen kunnen geven (afhankelijk van de landinstellingen enzo)

k3vin

Legacy Member
heb nu gewoon de decimal eruit gezwierd en er doubles van gemaakt, nu werkt het wel en op het eerste zicht heb ik nu ook nog geen onplezierige bijwerkingen :)

deepthroat

Legacy Member
Mss eens proberen met "Int32.parse" of "double.parse"

zoals bv:

try
{
Int32.Parse(TextBox.Text)
}
catch
{
//errorProvider.SetError(TextBox,"fout boodschap");
TextBox.Focus();
}

Da Turtle

Legacy Member
Als je met user input werkt en nog niet veel kent van exceptions kan je altijd TryParse gebruiken:
Code:
double kommagetal;
if(Double.TryParse(tekst, out kommagetal)) {
    // de variabele kommagetal heeft nu de double waarde die in de tekst voorkomt
} else {
    // de tekst was geen geldig kommagetal
}

Albireo

Legacy Member
mijn rijkelijk late versie met decimaalteken volgens landinstelling

Code:
using System.Globalization;

decimal decimalnumber;
if (decimal.TryParse(this.DecimalTextBox.Text, NumberStyles.Number, CultureInfo.CurrentCulture,out decimalnumber)) {
  //good input
}
else {
  //bad input, bad! Now go to your room!
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan