+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Funzione che non esegue le istruzioni

  1. #1
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Post
    2,855
    Like Inviati  
    7
    Like Ricevuti  
    0
    Ciao a tutti.
    Vengo al sodo del problema,dunque,dopo inserito dei numeri nella textbox faccio eseguire una conversione in numero intero e per evitare che il numero inserito sia minore a 1 o maggiore a 90
    attivo la funzione per controllare se il numero inserito sia tra 1 e 90.
    Di seguito il codice di inserimento nella textbox:
     Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
            If TextBox2.Text = String.Empty Then ' se  vuota la textbox passo alla successiva textbox
                Exit Sub
            Else
             Dim ritorno As Boolean = True
                intero = Convert.ToInt32(TextBox2.Text)
                ritorno = controlla(intero)  ' qui la funzione  controlla con il parametro
                If ritorno = False Then      ' se non  tra 1 e 90 messaggio di avviso
                    MessageBox.Show("tra 1 e 90")
                End If
                myarray(0) = intero  ' qui  irrilevante al problema in quanto mi serve per ulteriore elaborazione
            End If
        End Sub
    
    e qui il codice della funzione:
     Private Function controlla(ByVal numero) As Integer
            If numero < 1 Or numero > 90 Then
                Return False
            End If
        End Function
    
    ora,se provo a mettere nella textbox2 il numero 11 la funzione mi ritorna false e non riesco a capire perch in quanto il numero 11 nel range tra 1 e 90.
    Sbaglio qualcosa che mi sfugge?
    ℹ️ Leggi di pi su sistemista ...

  2. #2
    Ferrari_and non  in linea Scolaretto
    Post
    295
    Like Inviati  
    2
    Like Ricevuti  
    3
    Secondo me c qualche problema con la dichiarazione della funzione

    Quote Originariamente inviato da sistemista Visualizza il messaggio
    controlla(ByVal numero) As Integer
    Conrolla (byval Numero as integer) as boolean

    In pi manca il ritorno con true quindi l' else nella funzione controlla

  3. #3
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Post
    2,855
    Like Inviati  
    7
    Like Ricevuti  
    0
    Conrolla (byval Numero as integer) as boolean
    Gi provato non funziona lo stesso e poi in fase di debug il parametro numero riporta correttamente il numero 11 e successivamente il controllo if restituisce false in caso non sia nei parametri quindi non vedo il motivo di ritornare true se il numero corretto nel range.
    if numero < 1 or  numero >90 then....
    
    e qui non deve entrare nella if condizionale in quanto numero non ne minore ad 1 e ne maggiore a 90
    quindi non entrando nella if non deve ritornare false.
    ℹ️ Leggi di pi su sistemista ...

  4. #4
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    Comparuzzo ... mi sa che devi limitarti col vino buono ...

        Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
            If TextBox2.Text = String.Empty Then
                Exit Sub
            Else
                Dim intero As Int32 = Convert.ToInt32(TextBox2.Text)
                Dim inRange As Boolean = controlla(intero)
    
                If Not inRange Then
                    MessageBox.Show("tra 1 e 90")
                    TextBox2.Focus()
                Else
                    ' Valore ok
                End If
            End If
        End Sub
    
        Private Function controlla(ByVal numero) As Boolean
            Dim res As Boolean = True
            If numero < 1 Or numero > 90 Then res = False
            Return res
        End Function
    
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    Ferrari_and non  in linea Scolaretto
    Post
    295
    Like Inviati  
    2
    Like Ricevuti  
    3
    Scusa se dissento.
    Ma in linea torica di programmazione la funzione cos come dichiarata restituiesce un intero e non un booleano.

    Quindi quando la chiami ti da un numero (che poi in molti sistemi e linguaggi un booleano sia rappessentato con un numero poco importa)

    Il fatto che non ci sia l' else sinifica che in caso ri valore nel range il valore di ritrno indefinito quindi un qualsiasi numero interno.

    Di per se la funzione non da errori ma il suo funzionamente dal prunto di vista della programmazione puramente teorica non quello per cui stata pensata / progettata.

  6. #6
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Post
    2,855
    Like Inviati  
    7
    Like Ricevuti  
    0
    Comparuzzo,riguardo al vino buono hai perfettamente ragione ma che vuoi con questi periodi...
    intanto grazie, il codice ora a posto ma non capisco il perch entra nella if anche se il parametro corretto...
    ℹ️ Leggi di pi su sistemista ...

  7. #7
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    In quale if?
    ℹ️ Leggi di pi su AntonioG ...

  8. #8
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Post
    2,855
    Like Inviati  
    7
    Like Ricevuti  
    0
    nella funzione controlla.
    ℹ️ Leggi di pi su sistemista ...

  9. #9
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    La if va ovviamente valutata ma non viene eseguita se la condizione non vera ...
    ℹ️ Leggi di pi su AntonioG ...

  10. #10
    Dev-01 non  in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    Buonasera e tanti auguri a tutti:

    propongo un esercizio stilistico che poco ha a che fare con la risposta ma forse aiuta a risolvere parte del problema (in particolare l'ultima):

    Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
       
            Dim Value as string = TextBox2.Text
    
    	If Value = String.Empty OrElse Not IsNumeric(Value) Then  Exit Sub 
       
            If controlla(Convert.ToInt32(TextBox2.Text)) Then ' * E' pi logico
                ' * Valore OK
            Else
                MessageBox.Show("tra 1 e 90")
                TextBox2.Focus()
            End If
       
    End Sub
     
    Private Function controlla(ByVal numero) As Boolean
        Return   (numero > 0 Or numero < 91)                 ' * Riga rieditata (grazie sspintux).
    End Function
    
    In questo modo assicuri che il valore passato sia un numero, non devi computare inutilmente una conversione del risultato ('NOT Controlla' non esiste pi) e il codice pi leggibile.
    Ultima modifica di Dev-01; 23-12-2020 19:23 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Problema istruzioni
    Da antonio_81 nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 13-11-2020, 12:58
  2. Risposte: 2
    Ultimo Post: 21-06-2009, 13:37
  3. Istruzione IF non torna indietro ma mi esegue tutto!
    Da maximus82 nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 08-05-2009, 20:47
  4. Non mi esegue il salto a nuova pagina di stampa
    Da marioCT nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 23-07-2008, 22:02
  5. Shell che non esegue un file .BAT
    Da g.novi nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 10-01-2008, 17:10