Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
06/12/07 14:39
alexVB2005
ciao a tutti e sono nuovo.


ho un piccolo problema con un programma che ho fatto.

la sua funzione è quella di analizzare un file di batch dicendo con una messagebox che quel file è infetto.

al click con il button ho inserito questo codice:
            Dim c As New IO.StreamReader(TextBox1.Text)
            Dim b = c.ReadLine
            If b.contains("del") Then
                MsgBox("this file is infected = command del")
            End If


ora il problema è che quando legge nel file non va a capo! nel senso che legge solo la prima riga del file!.

ho provato in un sacco di modi ma niente.

potreste spiegarmi come fare?

ed anche perchè se voglio scrivere in un file funziona mentre con il comando contains no?

grazie in anticipo.
aaa
06/12/07 16:15
Il Totem
Legge solo una riga perchè tu gli hai comunicato di leggere solo una riga: infatti la funzione ReadLine è presente solo una volta nell'assegnazione in-line della variabile b (di cui non si conosce il tipo, e perciò vengono effettuate operazioni di boxing a runtime che aumentano l'uso di memoria). Oltre a questo, non hai controllato che il file esista prima di procedere e ti sei dimenticato di chiuderlo.
If Not IO.File.Exists(TextBox1.Text) Then
  'Il file non esiste, lancia un errore
  Exit Sub
End If

Dim R As New IO.StreamReader(TextBox1.Text)
Dim Line As String

'Fino alla fine del file
While Not R.EndOfStream
  'Legge una riga
  Line = R.ReadLine
  'Controlla che contenga "del", senza tener conto
  'delle maiuscole
  If Line.ToLower.Contains("del") Then
    'Il file e' pericoloso: inutile procedere
    MessageBox.Show("File pericoloso!")
    Exit While
  End If
End While

'Chiude il file
R.Close()


P.S.: mi sa che Piero non ha tenuto conto che commenti in Visual Basic sono solo a linea singola...
Ultima modifica effettuata da Il Totem 06/12/07 16:17
aaa