Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb .net] textbox
Forum - C# / VB.NET - [vb .net] textbox - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 21:55
Sabato, 12/04/2014
Testo quotato

Postato originariamente da nessuno:

Testo quotato

Postato originariamente da R0gerBlack:
ma anche 2108,99 = 2108



No ... in quel caso vale 2109



@nessuno, che io sappia il tipo Integer tronca il valore decimale, non lo arrotonda (7/4 = 1), quindi dovrebbe essere lo stesso 2108, comunque sembra che in VB.NET si tenda ad arrotondarlo.

@ju89 metti questo codice all'inizio della sub
Codice sorgente - presumibilmente VB.NET

  1. If value = "" Then
  2. Return
  3. End If



Comunque puoi isolare il codice in un Try-Catch per evitare altri tipi di errori (tipo se viene inserita una stringa)

Ultima modifica effettuata da R0gerBlack il 13/04/2014 alle 11:12
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:23
Domenica, 13/04/2014
Il tipo è un tipo e non esegue nulla.

E' l'operazione di conversione tra la stringa e l'integer (che passa da un reale) che esegue l'approssimazione. Succede anche in VB6 ...

Fra l'altro, personalmente non mi piace affatto una scrittura come

x = ....Text

perché una conversione esplicita evita problemi "nascosti".


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ju89 (Normal User)
Pro


Messaggi: 61
Iscritto: 26/03/2014

Segnala al moderatore
Postato alle 14:46
Lunedì, 14/04/2014
ho inserito il codice :
Codice sorgente - presumibilmente VB.NET

  1. If value = "" Then
  2.             Return
  3.         End If



ma appena scrivo un numuero quando avvio il programma, va in errore ( InvalidCastException non è stata gestita).

Vi lascio il codice che ho inserito.

Codice sorgente - presumibilmente VB.NET

  1. Private Sub sanzione_TextChanged(sender As Object, e As EventArgs) Handles sanzione.TextChanged
  2.         Dim value As Decimal = sanzione.Text
  3.         If value = "" Then
  4.             Return
  5.         End If
  6.         If value >= 211 And value <= 2108 Then
  7.             Label5.Text = 12
  8.         ElseIf value >= 2108.01 And value <= 5270 Then
  9.             Label5.Text = 24
  10.         ElseIf value >= 5270.01 And value <= 99999 Then
  11.             Label5.Text = 60
  12.         End If
  13.     End Sub

:-|

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 18:27
Lunedì, 14/04/2014
Allora, forse non ci siamo spiegati bene, il cast è la conversione di un tipo in un altro, tipi simili ma con rage diversi non hanno grandi problemi di cast, in quanto se il rage è adeguato questi possono convertirsi implicitamente, se invece i due tipo non hanno nulla a che fare tra loro, come il decimale e la stringa, serve una funzione che si occupi di questa conversione, in C# esiste il Parse devi trovare quale funzione permette questo cast esplicito in VB .NET

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 20:16
Lunedì, 14/04/2014
ju89 scusa non ho tenuto conto del fatto che in teoria un Decimal non potrebbe neanche avere il valore "", quindi dovresti scrivere all'inizio della procedura

Codice sorgente - presumibilmente VB.NET

  1. If sanzione.Text = "" Then
  2. Return
  3. End If



L'idea di una conversione esplicita non è male, ma sinceramente in VB.NET che si tollera di tutto non mi sembra così necessaria per un programma amatoriale.

Ultima modifica effettuata da R0gerBlack il 14/04/2014 alle 21:14
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:42
Lunedì, 14/04/2014
Se si vuole imparare a programmare, sin dai primi programmi, è necessario utilizzare le corrette metodologie.



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ju89 (Normal User)
Pro


Messaggi: 61
Iscritto: 26/03/2014

Segnala al moderatore
Postato alle 20:51
Lunedì, 14/04/2014
@R0gerBlack anche aggiungendo la tua riga di codice, andava in errore.
Adesso il codice funzionante che ho messo è questo
Codice sorgente - presumibilmente VB.NET

  1. Private Sub sanzione_TextChanged(sender As Object, e As EventArgs) Handles sanzione.TextChanged
  2.         If sanzione.Text = "" Then
  3.             Return
  4.         End If
  5.         If sanzione.Text >= 211 And sanzione.Text <= 2108 Then
  6.             Label5.Text = 12
  7.         ElseIf sanzione.Text >= 2108.01 And sanzione.Text <= 5270 Then
  8.             Label5.Text = 24
  9.         ElseIf sanzione.Text >= 5270.01 And sanzione.Text <= 99999 Then
  10.             Label5.Text = 60
  11.         End If
  12.     End Sub



e non da nessun errore.
Vi ringrazio per l'aiuto, sempre disponibili e gentili.:)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo