Newsgroup: it.comp.lang.visual-basic
Titolo: lettura di un file di testo

Salve a tutti.
Sto sviluppando un programma che legge un file di testo generato in
automatico da un sito web con PHP da tabelle MYSQL.
Il file è composto da alcune decine di righe di testo che contengono
alcuni campi separati da "|" (es.
39|2|2.11|CLASSE|A1|23-01A0002|2|0.00|2005-10-01)
Il programma purtroppo legge tutto in una sola unica riga, e non in
tante righe separate. Line Input cattura praticamente tutto il file
invece di una sola riga.
Se apro il file appena ricevuto con NOTEPAD il file appare continuo e
gli "a capo" sono rappresentati da quadretti infilati fra le righe
poste una di seguito all'altra. Il testo è incomprensibile.
Se apro il file con WORDPAD il file appare ordinato, riga dopo riga, e
gli "a capo" fanno la loro funzione e non si vedono. Se salvo il file
senza eseguire modifiche e lo riapro con NOTEPAD il file adesso è
ordinato e il programma lo legge senza problemi.
qui ho messo i 2 file. Sono solo 3kb
http://fzanchettin.altervista.org
\definitivo.zip
Come posso evitare di dover passare con Wordpad tutti i files per poter
essere letti dal programma senza problemi?
Grazie
frank

 essere letti dal programma senza problemi?
Leggi quali caratteri usa per gli accapo [dovrebbero essere 
chr(10)+char(13)] e dopo che hai letto il file splitta il tutto con i 
caratteri di accapo :) ed avrai tutte le linee del tuo file senza 
doverli ripassare in wordpad ..
--
SEZIONE PICCOLI ACCORGIMENTI: "Chiamami un tassě", mi disse prima di 
morire e sulla sua lapide ho scritto: "Qui riposa in pace Untassě".
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

frank wrote:

il problema e' dovuto al diverso tipo di sequnza NewLine usata nei SO
probabilmente il sito e' su una macchina Linux che il solo LF (10), 
anzichè CR,LF (13,10) tipico di windows.
se il file lo leggi con un programma VB devi usare la funzione Split()
per dividere in un array le singole righe.
bye
r

 ha scritto nel messaggio
news:1133427890.7...@g14g2000cwa.googlegroups.com...
Salve a tutti.







Grazie
frank
-------
i tuoi file il mio pc li considera "google earth eta file" :)
con un hexeditor vedi che il terminatore di linea, come dice nerone, e' 0A =
chr$10 = se non sbaglio vbLf
puoi provare qcosa del genere
    Dim s As String
    dim fNum as long: fNum = FreeFile
    dim fName as string: fname=[il tuo path+file]
    Open fName For Input Shared As #fNum
    s = Input$(LOF(fNum), #fNum)
    Close fNum
    s = Replace(s, vblf, vbCrLf)
'oppure     s = Replace(s, chr$(10), vbCrLf)
    fnum=freefile
    open fname for output as #fnum
    print #fnum, s
    close #fnum
dovresti trovarti il file ok per win.
ciao, a.

 ha scritto nel messaggio 
news:1133427890.7...@g14g2000cwa.googlegroups.com...



Ciao a tutti.
Certo. Uno dei due file è passato per Wordpad. L'altro no (ed è
quello che possiede il problema).
Il programma utilizza Line Input per leggere il file e la seguente
riga:
 line input #1, txtline
restituisce una sola stringa contenente tutto il file.
Ciao
frank


Ciao e grazie per le Vostre risposte.
La guida in linea attribuisce la funzione Split() sono a un dbgrid.
Come la posso applicare a una stringa?
Ciao e grazie
frank

Se stai parlando di Vb6 Split() è una funzione comune che lavora su 
stringhe.
Cmq anche su Net è la stessa cosa:
Dim a() as string
a() = split("uno,due,tre",",")
a(0) = uno
a(1) = due
a(2) = tre
Ciao, Emiliano


La guida in linea attribuisce la funzione Split() sono a un dbgrid.
Veramente no... almeno nella mia guida.
Nerone si riferiva alla funzione "Split".
Cercando "Split" nell'indice della guida trovo le seguenti voci:
Split
      aggiunta ed eliminazione dell'oggetto
      funzione <-------- Qui!
      modifica dell'oggetto
      oggetto
      ...
      ...
Ciao!
    Alex

 ha scritto nel messaggio 
news:1133442935.9...@f14g2000cwb.googlegroups.com...



Ciao a tutti!
Credo che sia proprio la mia versione di VB. La società non ha più
aggiornato la VB5 e alla voce SPLIT trovo solo l'oggetto e la
proprietà ed entrambi si riferiescono a una DBGRID.
Che fare?
Ciao e grazie
frank

Che fare?
Gia' detto, direi:
1) applichi la soluzione proposta da andrea palazzi che consiste nella 
sostituzione di tutti i vblf con vbcr & vblf;
2) utilizzi "Split" che funziona come gia' illustrato da Emiliano:
Dim strSorg     As String
Dim vettStr()   As String
Dim idx as Integer
strSorg = "Paperino" & vbLf & "Topolino" & vbLf & "Pippo" & vbLf & "Pluto" & 
vbLf & "Cip" & vbLf & "Ciop"
vettStr = Split(strSorg, vbLf)
For idx = LBound(vettStr) To UBound(vettStr)
         Debug.Print vettStr(idx)
Next idx
A questo punto la funzione "Split" avra' aggiunto all'array 6 elementi (con 
indice da 0 a 5) ognuno dei quali contenente una delle sottostringhe 
separate da vbLf (Chr$(10)).
Ciao!
    Alex

 2) utilizzi "Split" che funziona come gia' illustrato da Emiliano:
Split in VB5 non esiste.
Sul sito della Microsoft però, nascosto da qualche parte c'è il codice VB5 
per implementare le nuove funzioni stringa di VB6, come ad es. Split() e 
Replace().
Prova a cercare anche nei vecchi post di questo gruppo se trovi qualcosa.
Ciao 

> Split in VB5 non esiste.
Oops! Questa cosa non me la ricordavo proprio... :-(
Ciao!
    Alex