Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492

    Ricerca di più sottostringhe in righe di file txt

    Salve a tutti
    ho un file txt con il seguente contenuto:
    Nome1 Cognome1 numero1 numero1
    Nome2 Cognome2 numero2 numero2
    Nome3 Cognome3 numero3 numero3
    Nome4 Cognome4 numero4 numero4
    Nome5 Cognome5 numero5 numero5

    Ora voglio che tutti i nomi e cognomi vanno in una combo. Se volessi mettere solo i nomi scriverei così:
    codice:
    Line Input #intfile1, rigaFile1
    
    While Not EOF(intfile1)
    
        Dim lungNum As Integer
        lungNum = InStr(1, rigaFile1, " ", vbTextCompare)      
        cmbNum.AddItem (Left$(rigaFile1, lungNum))
    Wend
    1)ma volendo far visualizzare anche il cognome come dovrei fare?andarci a sommare la lunghezza del nome e iniziare la ricerca da quel punto o c'è una soluzione migliore?
    2)come posso fare a recuperere i numeri relativi alla persona selezionata nella combo e visualizzarli in textbox?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovresti usare la Split ...

    In realta', quel codice non funzionerebbe neanche dato che la Line Input sta fuori dal ciclo di lettura ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    si,infatti ho sbagliato ad incollare
    ora vedo un pò cosa riesco a tirare fuori con la Split

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Semplicemente, dopo che hai eseguito la

    Line Input #intfile1, rigaFile1

    esegui una

    v = Split(rigaFile1, " ")

    in cui v e' un vettore dimensionato in questo modo

    Dim v() As String

    Al termine dell'esecuzione della Split, troverai le varie parti della riga separate da spazi, all'interno dei singoli elementi del vettore. In v(0) troverai il nome, in v(1) il cognome e cosi' via ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Fatto come suggeritomi, però non caipsco, se elimino il while e quindi faccio leggere solo la prima riga va tutto bene, se invece faccio scorrere tutto il file mi da errore:

    Errore di run-time '9':
    Indice non compreso nell'intervallo

    codice:
        While Not EOF(intfile1)
            Line Input #intfile1, rigaFile1
            Dim v() As String
            v = Split(rigaFile1, " ")
            cmbNum.AddItem (v(0) & " " & v(1))
        Wend

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Ho capito qual'è il problema
    Quando arrivo alla fine del file il vettore non ha indici compreso nell'intervallo
    Sto provando con un controllo con Null, Nothing, <> ""...ma niente

  7. #7
    Originariamente inviato da zorro77
    Fatto come suggeritomi, però non caipsco, se elimino il while e quindi faccio leggere solo la prima riga va tutto bene, se invece faccio scorrere tutto il file mi da errore:
    Errore di run-time '9': Indice non compreso nell'intervallo
    codice:
        While Not EOF(intfile1)
            Line Input #intfile1, rigaFile1
            Dim v() As String
            v = Split(rigaFile1, " ")
            cmbNum.AddItem (v(0) & " " & v(1))
        Wend
    Buon giorno !

    Probabilmente in fondo al file hai una riga vuota, o un carattere di "a capo".
    Prova cosi' :

    Do
    Line Input #intfile1, rigaFile1
    If Trim$(rigaFile1)="" Then Exit Do
    Dim v() As String
    v = Split(rigaFile1, " ")
    cmbNum.AddItem (v(0) & " " & v(1))
    Loop Until EOF(intfile1)

    Ciao !



    P.S.: OOOOPPSS, ho perso per strada l'indentazione... ! Sorry
    . (Come di fa ad inserire il riquadro "codice" ????)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.