Newsgroup: it.comp.lang.visual-basic
Titolo: line input

altra domanda insidiosa.
line input legge una linea
che finisce con il carattere
chr(13) oppure la combinazione chr(13) + chr(10)
ora, se io invece avessi una linea che finisce con: ";" (punto e virgola)
oppure con chr(10) come faccio a farlo  riconoscere al comando come fie
linea ?
potete anche mentire e dirmi che esiste una soluzione facile e "quasi"
immediata.
grazie ancora a tutti voi.

 comando come fie linea ?
afaik non si può.
apri il file in modalità random e leggi byte per byte... o a blocchi di n
byte e poi analizza quelli.
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 wrote in message
news:bo8fm2$1am0mi$1...@ID-173193.news.uni-berlin.de...


 (punto e virgola) e poi passare a quelli dopo ?
Vedi Open For Binary, Instr e Seek


Sostituisci tutti i Chr(10) con dei Chr$(13), _prima_ di leggerlo
con line input. E' un sistema sporco e che fa perdere tempo,
ma funziona, se non altro perché ti permette di non cambiare
il codice che hai già fatto; ma non so quanto possa essere
performante. :-(
Tempo fa avevo fatto questa sub, per tutt'altri motivi, ma più
o meno fa quello che ti serve, vedi se funzia.
Per correttezza: il codice non è un granché... :-/
****************
Sub FiltraABlocchiPerCHR10(NomeDiFile As String)
' prende un file e sostituisce tutti i chr$(10) con dei chr$(13)
' per farlo ne crea uno temporaneo di nome lavorando.eps
     Dim FileLiberoInput As Integer
     Dim FileLiberoOutput As Integer
     Dim a As String
     Dim b As String * 16384
     Dim posiz10 As Long
     Dim StringaUltimoBlocco As String
     Dim NumeroBlocchi As Long
     Dim LunghezzaUltimoBlocco As Integer
     Dim blocco As Integer
     Dim NomeFileTemp As String
     Dim DiscoTemp As String
     Dim DirTemp As String
     DiscoTemp = "c:\"
     DirTemp = "temp\"
     If Dir$(NomeDiFile) = "" Then
          MsgBox "Il File da filtrare non esiste !"
          Exit Sub
     End If
     NomeFileTemp = DiscoTemp & DirTemp & "lavorando.eps"
     If Dir$(NomeFileTemp) <> "" Then Kill NomeFileTemp
     Name NomeDiFile As NomeFileTemp
     NumeroBlocchi = FileLen(NomeFileTemp) \ 16384
     DoEvents
     LunghezzaUltimoBlocco = FileLen(NomeFileTemp) Mod 16384
     DoEvents
     FileLiberoInput = FreeFile
     Open NomeFileTemp For Binary As #FileLiberoInput Len = 16384
     DoEvents
     FileLiberoOutput = FreeFile
     Open NomeDiFile For Binary As #FileLiberoOutput
     DoEvents
     For blocco = 1 To NumeroBlocchi
          Get #FileLiberoInput, , b
          posiz10 = InStr(b, vbLf)
          Do While (posiz10 <> 0) And (posiz10 < 16384)
               DoEvents
               Mid$(b, posiz10, 1) = vbCr
               posiz10 = InStr(b, vbLf)
               If posiz10 = 0 Then Exit Do
          Loop
          DoEvents
          Put #FileLiberoOutput, , b
          DoEvents
     Next blocco
     StringaUltimoBlocco = String(LunghezzaUltimoBlocco, " ")
     DoEvents
     Get #FileLiberoInput, , StringaUltimoBlocco
     posiz10 = InStr(StringaUltimoBlocco, vbLf)
     Do While (posiz10 <> 0) And (posiz10 < 16384)
          DoEvents
          Mid$(StringaUltimoBlocco, posiz10, 1) = vbCr
          posiz10 = InStr(StringaUltimoBlocco, vbLf)
          If posiz10 = 0 Then Exit Do
     Loop
     DoEvents
     Put #FileLiberoOutput, , StringaUltimoBlocco
     Close FileLiberoInput, FileLiberoOutput
     If Dir$(NomeDiFile) <> "" Then Kill NomeDiFile
     Name NomeFileTemp As NomeDiFile
     Debug.Print "finito"
End Sub
****************
Bye, G.

 wrote in message
news:bo92ch$1bftre$1...@ID-108681.news.uni-berlin.de...



Chr(10) --> VbLf
Chr(13) --> VbCr
ciaociao

 performante. :-(
E se si leggesse il file tutto d'un fiato con Input() e facesse una 
Split(strFile, ";")?
Ciao

 Split(strFile, ";")?
sě, ma news, in un precedente messaggio, ha parlato di 10 mb di file. credo
siano un po' troppi per leggerli in un colpo solo.


 wrote in message
news:bod9bm$1cdu5k$5...@ID-184808.news.uni-berlin.de...


>           Loop
Bye, G.

 mi tocca riscrivere tutto in c++ ? (che non so' usare...piccolo
dettagliio)
No, ti basta bufferizzare la lettura come si fa per le seriali:
- leggi un blocco e lo metti in strBuffer
- se c'è un ; elabori fino al ; e tieni in strBuffer solo la stringa
rimanente
- torni al punto 1 fino a fine del file
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net