Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Metodo parse per la conversione di stringa in IPAddress

    Ho un problema con il metodo "Parse" per la conversione di un indirizzo IP (forma xxx.xxx.xxx.xxx) da stringa a IPAddress.

    In pratica, l'utente inserisce l'IP all'interno di una TextBox, quindi essendo sotto forma di stringa occorre convertirlo in IPAddress per l'utilizzo del metodo "Connect".

    Cercando sulla guida in linea Microsoft ho trovato il metodo "Parse" che ha proprio la funzione di convertire un IP espresso in stringa nel tipo IPAddress.

    Riporto il link alla pagina della guida in linea.

    Link alla guida per il metodo Parse

    Ora, nel codice ho implementato il metodo Parse all'interno della classe IPAddress in questo modo:

    codice:
    Public Shared Function Parse(ByVal ipString As String) As IPAddress  
    End Function
    Poi, ho richiamato la funzione per eseguire la conversione:

    codice:
    Dim indirizzo_ip As IPAddress
    indirizzo_ip = IPAddress.Parse(ip.Text)
    A questo punto ho eseguito una MsgBox per visualizzare il contenuto di "indirizzo_ip" e la variabile risulta vuota.
    Quindi penso che all'interno della funzione Parse occorra inserire del codice ma non ho capito cosa.

    Qualcuno può illuminarmi?

    Grazie.

  2. #2
    La funzione "Parse" dovrebbe restituirmi qualcosa, quindi penso di dover implementare una istruzione "Return" . . . ma "Return cosa"???

    Non capisco come fargli restituire il valore . . .

    Un'altra cosa, sulla guida in linea (di cui trovate il link sopra) viene riportato questo codice:

    codice:
    Private Shared Sub parse(ipAddr As String)
          Try
             ' Create an instance of IPAddress for the specified address string (in 
             ' dotted-quad, or colon-hexadecimal notation).
             Dim address As IPAddress = IPAddress.Parse(ipAddr)
             
             ' Display the address in standard notation.
             Console.WriteLine(("Parsing your input string: " + """" + ipAddr + """" + " produces this address (shown in its standard notation): " + address.ToString()))
          
          Catch e As ArgumentNullException
             Console.WriteLine("ArgumentNullException caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          
          Catch e As FormatException
             Console.WriteLine("FormatException caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          
          Catch e As Exception
             Console.WriteLine("Exception caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          End Try
       End Sub 'parse 
    End Class 'ParseAddress
    Ora, la chiamata della procedura "Parse" all'interno di se stessa non manda in loop il tutto?!

  3. #3
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, a parte che nel titolo manca il linguaggio usato (anche se, dal codice, si evince che è vb.net, va sempre specificato), mi sembra che la soluzione l'hai scritta..come da msdn...e funziona. Non capisco dove è il problema. Perchè dici che va in loop?? così com'è funziona.
    Jupy

  4. #4
    La tag del linguaggio la avevo messa, poi modificando il messaggio è sparita . . .

    Tornando al programma non capisco come implementare la funzione.

    Sulla guida il metodo "Parse" viene illustrato sotto forma di funzione e poi nell'esempio usa una procedura . . .

    Tu come la implementi la "Parse"?

  5. #5
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    ma scusa, hai il codice già scritto... non ti va bene?
    Jupy

  6. #6
    Cerco di spiegarmi, almeno per quello che ho capito.

    Il metodo "Parse" funziona in questo modo:

    codice:
    Public Shared Function Parse( _
       ByVal ipString As String _
    ) As IPAddress
    Gli passo la stringa con dentro l'ip nella forma xxx.xxx.xxx.xxx (ipString As String) il valore che deve tornare è quell'IP del tipo IPAddress.

    Ok, ora, ho copiato solo quello riportato sopra all'interno della mia classe IPAddress ed ho usato nel corpo del programma questa sintassi:

    codice:
    Dim indirizzo_ip As IPAddress
    indirizzo_ip = IPAddress.Parse(ip.Text)
    Adesso, il codice riportato nell'esempio della guida dove dovrei inserirlo per far funzionare questo benedetto metodo "Parse"? Come faccio a far si che mi restituisca l'indirizzo IP nel formato IPAddress?

    Per piacere cerca di essere chiaro, perchè come puoi facilmente capire, non ho compreso molto dall'esempio della guida. La teoria si, ma la pratica no.

    Grazie!


  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    stai facendo un po' di confusione... il codice di esempio è una sub e non una funzione.. se vuoi convertirlo in funzione fai una cosa del genere:
    codice:
    Private Shared function parse(ipAddr As String) as ipaddress
          Try
    
              return ipaddress.parse(ipAddr)
          
          Catch e As ArgumentNullException
             Console.WriteLine("ArgumentNullException caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          
          Catch e As FormatException
             Console.WriteLine("FormatException caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          
          Catch e As Exception
             Console.WriteLine("Exception caught!!!")
             Console.WriteLine(("Source : " + e.Source))
             Console.WriteLine(("Message : " + e.Message))
          End Try
    End function 'parse 
    
    ....USO
    Dim indirizzo_ip As IPAddress
    indirizzo_ip = Parse(ip.Text)
    adatta la funzione come meglio credi.. io ho fatto solo alcune piccole modifiche per farti vedere come funziona...
    Jupy

  8. #8
    Proverò così, grazie per l'aiuto!


  9. #9
    Purtroppo ricevo ancora questo tipo di errore nel momento in cui deve essere eseguito il metodo "Parse":



    La funzione "Parse" è cosi implementata all'interno della classe IPAddress:

    codice:
    Public Shared Function Parse(ByVal ipString As String) As IPAddress
            Return IPAddress.Parse(ipString)
        End Function
    Mentre il suo utilizzo nel corpo del programma avviene in questo modo:

    codice:
    Dim indirizzo_ip As IPAddress
    indirizzo_ip = IPAddress.Parse(ip.Text)
    Se utilizzo questa sintassi:

    codice:
    indirizzo_ip = Parse(ip.Text)
    Mi viene segnalato l'errore "Nome Parse non dichiarato".

    Dove sta l'errore?

  10. #10
    Un'altra cosa, forse la ho già chiesta ma ormai sto perdendo lucidità . . .

    Il metodo:

    codice:
    Public Shared Function Parse( _
       ByVal ipString As String _
    ) As IPAddress
    (dentro alla classe IPAddress) mi restituisce qualcosa?

    Devo inserire una Return? Se si cosa gli faccio ritornare?

    Ho usato il debug e vedo che quando chiamo il metodo Parse, il compilatore passa dalla funzione, ma non restituisce nulla!

    Cavolo, mi sono piantato su quella che dovrebber essere (è) una cavolata e non riesco a saltarci fuori!

    Quando implemento il metodo in questione compare il messaggio:

    La funzione 'Parse' non restituisce un valore in tutti i percorsi del codice. È possibile che venga restituita un'eccezione dovuta a un riferimento con valore null in fase di esecuzione quando viene utilizzato il risultato.
    Da qui, appunto, il mio dubbio, come faccio a farmi restituire questo benedetto valore?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.