Newsgroup: it.comp.lang.visual-basic
Titolo: Trova e.mail in file di testo (?) [Alex Palmese / Er Roscio]

...non me ne sono dimenticato...è solo che ho passato il poco tempo che
dedico a quest'hobby (VB)
a premere F1 e cercare di capire cosa avevate scritto...
qlc l'ho capito e commentato (così non mi dimentico)...però
ancora non funziona al 100%, ad oggi i problemi che ho riscontrato e NON
risolto
sono 2:
1)mi si blocca con error 5 quando incontra una Riga (stringa) che inizia da
0 es:
pr...@prova.it
 <----si blocca
 
pr...@prova.it
 <---funzia
2)si blocca per memoria esaurita se gli faccio leggere un txt di 90Kb...
...ho provato varie varianti, ma senza risultato, mi date un'altra spinta?
Luca ;-)
allego listato
Private Sub cmdApri_Click()
    CommonDialog1.Filter = "File di testo (*.txt)|*.txt|File m@il
(*.m@l)|*.m@l|Tutti i file (*.*)|*.*"
    CommonDialog1.ShowOpen
    nomefile = CommonDialog1.FileName
    cmdEstrai.Enabled = True
    '----------------
Dim Email As Variant
    'Ammettiamo che leggi il tuo file una riga alla volta
    '(ad esempio con LineInput) ed ogni riga la leggi
    'nella variabile Riga:
Open nomefile For Input As #1   ' Apre il file.
   ' Imposta il puntatore del mouse = a clessidra.
   Screen.MousePointer = vbHourglass
Do While Not EOF(1)   ' Ripete fino alla fine del file.
   Line Input #1, riga   ' Assegna la riga a una variabile.
   DoEvents                 'elimina lo sfarfallio di cmdApri
        Do
            chiocciola = InStr(riga, "@") 'cerca la pos di "@" solo x vedere
se c'è...
            If chiocciola = 0 Then Exit Do '...se c'è, di sicuro è >0 quindi
può continuare, in caso contrario esce per questa riga
            Inizio = InStrRev(riga, " ", chiocciola)    'trova la posizione
dello spazio vuoto "" nella stringa Riga, partendo dalla posizione della
chiocciola, trova lo spazio vuoto che precede l'inizio indirizzo...
            Fine = InStr(chiocciola, riga, " ")         'trova la posizione
dello spazio vuoto "" nella stringa Riga, partendo dalla posizione della
chiocciola, trova lo spazio vuoto che è dopo la fine dell' indirizzo...
                If Fine = 0 Then 'se Fine dà 0 (perchè NON c'è " " a fine
Riga) causa l'errore...(non può essere a 0 che sarebbe la prima posizione..)
                Fine = InStr(chiocciola, riga, (Chr(13) + Chr(10)))
'chr13+CHR10 è a capo
                End If
            'PROVA AD AGGIUNGERE UNO SPAZIO VUOTO A RIGA X NON PARTIRE A
0...?
                If Inizio = 0 Then
                    Email = Email & ";" & Mid(riga, Inizio, Fine)
                Else
                    Email = Email & ";" & Mid(riga, Inizio, (Fine - Inizio))
'si può usare ; o a capo!
                End If
            riga = Mid(riga, Fine + 1) 'toglie l'email appena trovato e
ripropone il resto di riga (con loop) ad un'altro controllo della
chiocciola..
        Loop
   'Debug.Print Riga   ' Scrive nella finestra Immediata.
Loop
Close #1   ' Chiude il file.
txtFile.Text = Email
txtFile.Enabled = True
   ' Ripristina il puntatore del mouse.
   Screen.MousePointer = vbDefault
End Sub
--
--------------------------------------------
"Che la vostra memoria non s'imboli
  nel primo mondo da l'umane menti,
  ma s'ella viva sotto molti soli "
--------------------------------------------
molte onorevoli grazie a Voi
^____^
Luca

RISOLTO