Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Allora ho questa funzione scritta da me, però ritorna sempre 0, serve per individuare tutte le corrispondenze con una determinata parola in un determinato testo.
rtb = un RichTextBox
parola = asd
il testo è formato da:
asd asd ciao asd ciao asd ciao asd
Invece di ritornare 5 la funzione ritorna 0, mi riuscite a individuare l'errore?
Codice sorgente - presumibilmente VB.NET
PublicFunction matchesText(ByVal rtb AsObject, ByVal parola AsString)AsInteger
Dim inizio AsInteger
Dim posizione AsInteger
Dim matches AsInteger
While inizio <> 0
posizione = rtb.SelectionStart
If rtb.SelectionLength > 1 Then
posizione = rtb.SelectionStart+ 2
Else
posizione = rtb.SelectionStart+ 1
EndIf
inizio =InStr(posizione, rtb.Text, parola)
matches += 1
EndWhile
Return matches
ReturnNothing
EndFunction
Ultima modifica effettuata da Il Totem il 17/11/2011 alle 12:05
Ciao,
il tuo approccio è sbagliato per diversi aspetti:
- il ciclo While non inizierà mai perché una variabile Integer viene inizializzata a 0 quindi inizio <> 0 è impossibile, per risolvere potresi usare alternative quali Do Loop While o Do Until Loop;
- se proprio non vuoi passare direttamente la stringa da analizzare considera il dichiarare il parametro rtb come RichTextBox e non Object, in questo modo eviti upcasting superflui;
- il Return Nothing finale è inutile perché non avrà mai possibilità di esecuzione;
- l'utilizzo di istruzioni vb6 se non strettamente necessario è una brutta abitudine in .NET
Inoltre esistono soluzioni più semplici, ad esempio
Ultima modifica effettuata da VMikle il 16/11/2011 alle 23:46
VMikle ti tingraziamo x aver fornito supporto ma pls leggi il regolamento. I topic con un titolo nn adeguato al contenuto nn viene dato supporto ms chiuso e fatto riaprire con il titolo giusto - Thejuster - 17/11/11 08:42
Perché il titolo sarebbe non adeguato? - VMikle - 17/11/11 17:30