[asp.net] String to integer wil niet lukken

Pagina: 1
Acties:

  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Ok als je dit leest dan denk je gelijk, :? dat is toch zo gepiept

Dat dacht ik ook, ik had eerst in mijn website overal gewoon query's gemaakt die 1 string waren en die dan uitgevoerd worden

nu kwamen er wat problemen mee, dus ben ik overal een Sqlcommand van gaan maken.
Alleen nu liep ik de hele tijd tegen de volgende fout aan
code:
1
System.FormatException: Input string was not in a correct format.


Na ff zoeken kwam ik erachter dat mijn integers niet goed waren
In de update/insert functie haal ik de waarden uit de TextBoxen
dus
code:
1
dim test as integer = tbtest.text


Ik heb ook een typevalidator op de textbox staan zodat er alleen integer waarden ingevuld mogen worden.

Het probleem komt zodra ik helemaal niks invul in die tekstbox (wat vrij regelmatig voorkomt). Dan gaat hij over de zeik

Ik heb geprobeerd om via
code:
1
Int32.parse(string)

en
code:
1
Convert.toInt32(string)

te werken, maar beide met hetzelfde resultaat.
Moet ik nu gewoon handmattig checken of het veld leeg is en dan maar een 0 invullen of is er een ander oplossing?

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Tja.
.NET is strong typed en daardoor kan je natuurlijk niet
code:
1
dim test as integer = tbtest.text

doen.

je zult het idd met die Convert.ToInt32() method moeten oplossen, met een check errond of er wel degelijk een waarde in die textbox ingevuld is:
code:
1
2
3
4
if( textBox1.Text != "")
{
   int a = Convert.ToInt32( textBox1.Text);
}


(En je zorgt er ook best voor dat eventuele castingexceptions ed opgevangen worden. Stel je voor dat er geen integer in die textbox ingevuld wordt).

https://fgheysels.github.io/


  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
whoami schreef op 21 November 2002 @ 20:46:
Tja.
.NET is strong typed en daardoor kan je natuurlijk niet
code:
1
dim test as integer = tbtest.text
als je gewoon een 0 invult dan gaat dat gewoon wel
(En je zorgt er ook best voor dat eventuele castingexceptions ed opgevangen worden. Stel je voor dat er geen integer in die textbox ingevuld wordt).
Die had ik al erbij staan

Maar ja, dan zit er waarschijnlijk niks anders op dan, om eerst te kijken of er iets is ingevuld

[ Voor 10% gewijzigd door dominion99 op 21-11-2002 20:57 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
[nohtml]
dominion99 schreef op 21 November 2002 @ 20:56:
[...]

als je gewoon een 0 invult dan gaat dat gewoon wel
Dat verbaast me zeer en ik kan het moelijk geloven.
Wat jij nl. doet met die code is eigenlijk impliciet gaan casten, en dat is niet mogelijk/toegestaan in .NET.
Je gaat nl. een string aan een integer gaan toewijzen zonder dat je daarbij expliciet cast.

https://fgheysels.github.io/


  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
het verbaast mij ook, maar zodra ik niks invul dan gaat het fout en een 0 invullen gaat wel goed. Zonder dat ik ergens cast.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
whoami schreef op 21 November 2002 @ 21:00:
Dat verbaast me zeer en ik kan het moelijk geloven.
Wat jij nl. doet met die code is eigenlijk impliciet gaan casten, en dat is niet mogelijk/toegestaan in .NET.
Je gaat nl. een string aan een integer gaan toewijzen zonder dat je daarbij expliciet cast.
(zoals je weet: ) .NET is een platform, geen taal. Je kunt dus niet zeggen dat .NET strong typed is, dat is immers een eigenschap van een taal. Kijk bv. eens naar JScript.NET, die is duidelijk weak-typed.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
marcusk schreef op 21 november 2002 @ 21:33:
[...]
(zoals je weet: ) .NET is een platform, geen taal. Je kunt dus niet zeggen dat .NET strong typed is, dat is immers een eigenschap van een taal. Kijk bv. eens naar JScript.NET, die is duidelijk weak-typed.


* whoami dacht dat 1 van de eisen die de CLR aan .NET - talen stelde, was dat ze strong typed zijn.
* whoami gaat het ff opzoeken....

Hmm... Blijkbaar is strong typing dus idd toch geen vereiste die door de CLS (Common Language Specification) gesteld wordt.
Wat wel vereist is door de CLS:
- geen globale methoden of variabelen
- bepaalde data-types zijn niet toegestaan (sbyte, ushort, uint, ulong)
- geen members maken die enkel in casing verschillend
- exceptions inheriten van Exception
- geen pointers
- variable parameters zijn niet toegestaan.

Magoed, dit is behoorlijk off topic. ;)

[ Voor 33% gewijzigd door whoami op 21-11-2002 21:38 ]

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 28-08 15:58

gorgi_19

Kruimeltjes zijn weer op :9

dominion99 schreef op 21 november 2002 @ 21:18:
het verbaast mij ook, maar zodra ik niks invul dan gaat het fout en een 0 invullen gaat wel goed. Zonder dat ik ergens cast.
Op zich logisch. "" is geen integer, 0 wel.
Je moet er nog een RequiredFieldValidator aan je textbox koppelen..

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
gorgi_19 schreef op 21 November 2002 @ 21:41:
[...]

Op zich logisch. "" is geen integer, 0 wel.
Je moet er nog een RequiredFieldValidator aan je textbox koppelen..


Da's idd beter dan een ifje rond die Convert.ToInt32 zetten.

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Hmm... Blijkbaar is strong typing dus idd toch geen vereiste die door de CLS (Common Language Specification) gesteld wordt.
Wat wel vereist is door de CLS:
- geen globale methoden of variabelen
- bepaalde data-types zijn niet toegestaan (sbyte, ushort, uint, ulong)
- geen members maken die enkel in casing verschillend
- exceptions inheriten van Exception
- geen pointers
- variable parameters zijn niet toegestaan.

Magoed, dit is behoorlijk off topic. ;)
Euhm, ik vind het nog wel aardig ontopic hoor :)

Dit topic op zich is al een mooi voorbeeld van de verwarring die kan ontstaan wanneer een taal niet strong-typed is, of beter gezegd, wanneer impliciete casts toegestaan worden door de compiler. Dit kan echt zeer vervelende situaties opleveren, zeker wanneer je er ook nog van uit gaat dat impliciete casts niet toegestaan zijn (zoals ikzelf veronderstelde). "Waarom krijg ik toch weer die f@#$ing cast exception??? De boel compileert toch gewoon?" |:(.
Echt, ik zou iedereen die VB.NET klopt willen aanraden om Option Strict te gebruiken. Bespaart een hoop ellende (nadat je de 300 compile errors van het project hebt weggewerkt waar je in terecht bent gekomen ;)).
En dan te bedenken dat je Option Explicit ook nog uit kunt zetten... :X

Cuyahoga .NET website framework

Pagina: 1