Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET 2003 - Complicato] Soundex... dov'è l'errore?

Ciao ragazzi,
ho un problema con una funzione Soundex che devo implementare nel mio 
traduttore.
La funzione in questione l'ho presa da questo sito:
http://www.codeproject.com/useritems/Soundex.asp
E l'ho modificata in questo modo (solo la parte iniziale):
Private Function Compute(ByVal Word As String, ByVal Length As Integer) 
As String
(praticamente ho eliminato l'overload e l'ho fatta diventare Private)
Poi l'ho inserita in una classe dove dizionario1() è una matrice di 
stringhe che dichiarata come private all'interno della classe.
Inoltre ho scritto questa funzione (nella classe):
     Function Soundex(ByVal Word As String) As String
         Dim strResult, strWordSoundex, strDictSoundex As String
         Dim i As Integer
         If Word.Length > 2 Then
             strWordSoundex = Compute(Word, 4)
             'If strWordSoundex.Length = 4 Then
             'strWordSoundex = strWordSoundex.Remove(0, 1)
             'End If
             For i = 0 To dizionario1.GetUpperBound(0)
                 strDictSoundex = Compute(dizionario1(i), 4)
                 'If strDictSoundex.Length = 4 Then
                 'strDictSoundex = strDictSoundex.Remove(0, 1)
                 If strDictSoundex = strWordSoundex Then
                     strResult = strResult & ", " & dizionario1(i)
                 End If
                 'End If
             Next
             If strResult <> Nothing Then
                 strResult = strResult.Remove(0, 2)
             End If
         Else
             strResult = Nothing
         End If
         Return strResult
     End Function
Che sostanzialmente cerca all'interno di dizionario1() le parole con lo 
stesso soundex e le mette in una stringa.
Dopo questa introduzione, vengo al dunque.
Istanzio la classe
Dim Traduci As New Traduttore
Traduci.CaricaDizionario("path del dizionario")
Traduzione(0) = Traduci.Traduci(TextBox1.Text)
strAlternative = Traduci.Soundex(TextBox1.Text)
Queste tre ultime istruzioni sono messe in un for che cicla per caricare 
vari dizionari differenti (ogni volta dizionario1() viene sovrascritta)
Il problema è che al secondo ciclo mi dà errore di 
System.NullReferenceException
Se procedo col debug passo passo non ottengo l'errore, ma se lo lascio 
andare da solo l'errore si presenta.
Dove può essere il problema?
Grazie
Nicola

Ciao ragazzi,
ho un problema con una funzione Soundex che devo implementare nel mio 
traduttore.
La funzione in questione l'ho presa da questo sito:
http://www.codeproject.com/useritems/Soundex.asp
E l'ho modificata in questo modo (solo la parte iniziale):
Private Function Compute(ByVal Word As String, ByVal Length As Integer) 
As String
(praticamente ho eliminato l'overload e l'ho fatta diventare Private)
Poi l'ho inserita in una classe dove dizionario1() è una matrice di 
stringhe dichiarata come private all'interno della classe.
Inoltre ho scritto questa funzione (nella classe):
     Function Soundex(ByVal Word As String) As String
         Dim strResult, strWordSoundex, strDictSoundex As String
         Dim i As Integer
         If Word.Length > 2 Then
             strWordSoundex = Compute(Word, 4)
             For i = 0 To dizionario1.GetUpperBound(0)
                 strDictSoundex = Compute(dizionario1(i), 4)
                 If strDictSoundex = strWordSoundex Then
                     strResult = strResult & ", " & dizionario1(i)
                 End If


Aggiungo...
Il problema si presenta se carico un nuovo dizionario, mentre se il 
dizionario non cambia, il problema non si pone.
Però il dizionario caricato correttamente (anche perchè la traduzione 
avviene senza problemi)
La cosa si infittisce...
bye

Risolto...
Semplicemente era mal formattato il file, e il carattere finale era un 
ritorno a capo.
Poi splittando, ottenevo l'ultimo elemento della matrice con valore nothing
bye