Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-12-2010, 13:07   #1
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2698
[VB 2010] - Problema con function

Salve ragazzi,

come ben sapete sono ormai passato da tempo a VB Net e sto avendo qualche problema nella creazione di questa Function:

Codice:
Public Function CheckIfFtpFileContains(ByVal path As String, ByVal SearchStr As String) As Boolean

        If (path = Nothing Or path = "") Then
            path = "/"
        End If

        _FtpRequest = CType(WebRequest.Create("ftp://" + _Host + path), FtpWebRequest)
        _FtpRequest.Credentials = New NetworkCredential(_UserName, _Password)
        _FtpRequest.UsePassive = False
        _FtpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        _FtpRequest.EnableSsl = _UseSSL
        _FtpRequest.Proxy = Nothing
        _FtpResponse = CType(_FtpRequest.GetResponse(), FtpWebResponse)

        Dim sr As New IO.StreamReader(_FtpRequest.GetResponse().GetResponseStream())
        Dim str As String = sr.ReadLine()
        While Not str Is Nothing
            If Not str.StartsWith(".") Then
                CheckIfFtpFileContains = IIf(InStr(str, SearchStr) > 0, True, False)
                If CheckIfFtpFileContains = True Then
                    MessageBox.Show("Trovato")
                    Exit While
                End If

            End If
            str = sr.ReadLine()
        End While
        sr.Close()
        sr.Dispose()
        sr = Nothing
        _FtpRequest = Nothing

        'Return XXXXXXXXXXXXXXXXXXXXXXXXXXXX

    End Function
che mi restituisce il seguente avviso:


Come risolvo?

Grazie
lucausa75 è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2010, 14:22   #2
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Guardando il codice posso capire se ftp contiene file allora ti restituisce true mentre se non ci sono ti deve restituire falso giusto?

Cmq tornando all'errore in pratica tu non dai nessun valore di ritorno alla funzione quindi io lo modificherei così:

Codice:
      Public Function CheckIfFtpFileContains(ByVal path As String, ByVal SearchStr As String) As Boolean

      Dim Trovato as boolean = False        

        If (path = Nothing Or path = "") Then
            path = "/"
        End If

        _FtpRequest = CType(WebRequest.Create("ftp://" + _Host + path), FtpWebRequest)
        _FtpRequest.Credentials = New NetworkCredential(_UserName, _Password)
        _FtpRequest.UsePassive = False
        _FtpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        _FtpRequest.EnableSsl = _UseSSL
        _FtpRequest.Proxy = Nothing
        _FtpResponse = CType(_FtpRequest.GetResponse(), FtpWebResponse)

        Dim sr As New IO.StreamReader(_FtpRequest.GetResponse().GetResponseStream())
        Dim str As String = sr.ReadLine()
        While Not str Is Nothing
            If Not str.StartsWith(".") Then
                CheckIfFtpFileContains = IIf(InStr(str, SearchStr) > 0, True, False)
                If CheckIfFtpFileContains = True Then
                    Trovato =true
                    MessageBox.Show("Trovato")
                    Exit While
                End If

            End If
            str = sr.ReadLine()
        End While
        sr.Close()
        sr.Dispose()
        sr = Nothing
        _FtpRequest = Nothing

        Return Trovato

    End Function

Ultima modifica di jackk87 : 18-12-2010 alle 14:33.
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2010, 14:48   #3
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Aggiungo una considerazione su quel tipo di errore : da notare quel "on all code paths".
Una Function deve garantire sempre la restituzione del valore o oggetto previsto, in tutti i possibili percorsi del codice, perciò non è sufficiente piazzare un "Return" prima dell'End Function, per cavarsela.

Ad esempio :
Codice:
    Public Function metodo(ByVal arg As Integer) As String

        Select Case arg

            Case 1
                Return "Uno"

            Case 2
                Return "Due"

            Case Else

        End Select

    End Function
Non va, perchè esiste almeno un percorso ( Case Else ) in cui non viene restituito nulla.

Questo fatto può sembrare banale, all'apparenza, ma nella pratica non lo è affatto. Possono esserci "percorsi" del codice nascosti, basti pensare alle istruzioni che possono sollevare eccezioni.
In un metodo "a regola d'arte" bisognerebbe prevedere ogni errore possibile e separare il codice in modo che ciascuna istruzione critica, in caso di errore ( Try Catch ) vada a restituire un valore o oggetto opportuno, ma in nessun caso deve bloccare l'esecuzione...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2010, 15:20   #4
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Aggiungo una considerazione su quel tipo di errore : da notare quel "on all code paths".
Una Function deve garantire sempre la restituzione del valore o oggetto previsto, in tutti i possibili percorsi del codice, perciò non è sufficiente piazzare un "Return" prima dell'End Function, per cavarsela.

Ad esempio :
Codice:
    Public Function metodo(ByVal arg As Integer) As String

        Select Case arg

            Case 1
                Return "Uno"

            Case 2
                Return "Due"

            Case Else

        End Select

    End Function
Non va, perchè esiste almeno un percorso ( Case Else ) in cui non viene restituito nulla.

Questo fatto può sembrare banale, all'apparenza, ma nella pratica non lo è affatto. Possono esserci "percorsi" del codice nascosti, basti pensare alle istruzioni che possono sollevare eccezioni.
In un metodo "a regola d'arte" bisognerebbe prevedere ogni errore possibile e separare il codice in modo che ciascuna istruzione critica, in caso di errore ( Try Catch ) vada a restituire un valore o oggetto opportuno, ma in nessun caso deve bloccare l'esecuzione...
Ottima osservazione
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2010, 15:20   #5
lucausa75
Senior Member
 
L'Avatar di lucausa75
 
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2698
Grazie 1000 ad entrambe;
alla fine ho cmq risolto applicando in anticipo la soluzione suggerita da jackk87

lucausa75 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
Spotify introduce una nuova impostazione...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v