Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con Funzione Split()... [Un po' Lungo.......]

Salve...
Mi sto scervellando ormai da giorni per trovare un errore e non ci sono
riuscito...
Magari voi mi potete aiutare.
Sto cercando di programmare un piccolo ChatBot ma in una funzione c'è
un errore (almeno così dice San VB...) che però io non vedo.
Posto la funzione e poi la spiego (e' un po' lunga...)
--------------------------------------------------------
Public Function Risposta(StrInput As String) As String
    Dim NewString, CommVett(), TempVett(), KeyString As String
    Dim iCounter, IndexMax, NumKeyW(), Size As Integer
    NewString = StrInput
    IndexMax = -1
    NewString = FunMOD.RemoveSpaces(NewString)
    NewString = FunMOD.RemovePunct(NewString)
    NewString = FunMOD.RemoveCommon(NewString)
    KeyString = GetAllKeywords
    CommVett = Split(KeyString, "|") 'QUI C'E' L'ERRORE!!!!
    ReDim NumKeyW(UBound(CommVett))
    For iCounter = LBound(CommVett) To UBound(CommVett)
        TempVett = Split(CommVett(iCounter), ";")
        NumKeyW(iCounter) = UBound(TempVett) - 1
    Next iCounter
    For iCounter = LBound(NumKeyW) To UBound(NumKeyW)
        If NumKeyW(iCounter) > IndexMax Then
            IndexMax = NumKeyW(iCounter)
        End If
    Next iCounter
    If IndexMax = -1 Then
        Size = GetCatSize(VarMOD.MemoryFile, "[DEAD]")
        Risposta = GetAnswerFrom(VarMOD.MemoryFile, "[DEAD]", Size)
    Else
        TempVett = Split(CommVett(IndexMax), ";")
        Size = GetCatSize(VarMOD.MemoryFile,
TempVett(LBound(TempVett)))
        Risposta = GetAnswerFrom(VarMOD.MemoryFile,
TempVett(LBound(TempVett)), Size)
    End If
End Function
--------------------------------------------------------
Questa funzione deve 'leggere' da un file una possibile risposta alla
domanda rappresentata da StrInput.
La funzione "GetAllKeywords" legge da un file diverse righe e le unisce
tramite il carattere "|".
Ad esempio, se il file contiene :
ciao;come;stai;[BOH]
come;ti;chiami;[BOH2]
non;ne;ho;idea;[BOH3]
la stringa risultante è :
ciao;come;stai;[BOH]|come;ti;chiami;[BOH2]|non;ne;ho;idea;[BOH3]
In CommVett() ci devono finire le tre righe divise :
CommVett(0) = "ciao;come;stai;[BOH]"
CommVett(1) = "come;ti;chiami;[BOH2]"
CommVett(2) = "non;ne;ho;idea;[BOH3]"
(Ho deciso di fare così perchè i dati nel file dal quale leggere
possono variare e quindi non ho potuto dimensionare CommVett)
E per fare questo ho voluto utilizzare la funzione Split(). (La riga
con il commento...)
Il problema è che, arrivato al punto dove c'è il commento compare un
messaggio di errore :
Errore di run-time '13' :
Tipo non corrispondente.
Non capisco, ho utilizzato Split nello stesso modo in altre parti del
programma e funziona.
Perchè qui no? Che ho fatto di sbagliato? Io l'errore non lo vedo.
Qualcuno sa dirmi qualcosa?
Se dovesse servire posto anche la funzione GetAllKeywords :
---------------------------------------------
Public Function GetAllKeywords() As String
    Dim Stringa, temp As String
    Open VarMOD.MemoryFile For Input As #MemIndex
    While Not Trim(temp) = "[KEYWORDS]"
        Line Input #MemIndex, temp
    Wend
    While Not Trim(temp) = ""
        Line Input #MemIndex, temp
        Stringa = Stringa & "|" & temp
    Wend
    Close #MemIndex
    GetAllKeywords = Stringa
End Function
---------------------------------------------
Grazie e se l'errore è stupido non insultatemi PLZ!! (Sono
principiante... ^_^')
:-))

 possono variare e quindi non ho potuto dimensionare CommVett)
I vettori possono essere ridimensionati a run time, tramite l'istruzione
redim
hth
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

     Dim NewString, CommVett(), TempVett(), KeyString As String
Prova a togliere le parentesi da CommVett.
Ciao.

Grazie a tutti!
:-)