Newsgroup: it.comp.lang.visual-basic
Titolo: Il minestrone di importare dei file di testo

Devo importare dei file di testo scaricati da Yahoo in formato CSV. Fin qui
nulla di strano, ogni campo viene separato da una virgola "," e uso una
split per separarmi i campi.
Con mia sorpresa, le linee non vengono terminate con un CR come nei sistemi
Mac o UNIX, o con un CRLF come siamo abituati da sempre....
MA CON UN SEMPLICE "LF"
Scusate lo sdegno: Ma a questo punto sono sbigottito! Dalle elementari mi
avevano insegnato che una riga in un file veniva interrotta con un CR o con
un CRLF, adesso Yahoo ci si mette a produrre dati con un LF punto e basta!
Mi aspetto che domani per interrompere una riga ci metta un ESCAPE...
Veniamo al mio problema: Ci sono delle funzioni pronte in VB per poter
leggere una riga sola dove come terminatore di riga ho un semplice LF e non
uno dei consueti terminatori di riga? Line Input legge solo righe con CRLF
oppure CR; oppure si può personalizzare?
Ai maghi del NG l'ardua sentenza....
Francesco

un CRLF, adesso Yahoo ci si mette a produrre dati con un LF punto e basta!
LF che corrisponde al codice ASCII 10 e' usato normalmente
sotto Unix per terminare le linee di testo.  Sotto Mac si
usa CR (corrispondente al codice 13) e sotto Windows/DOS si
usa CR+LF.  Il tuo sdegno, quindi, non e' giustificato...
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 Scusate lo sdegno: Ma a questo punto sono sbigottito!
'ffettivamente... :-(
Se i file non sono troppo lunghi, forse ti conviene fare un primo filtraggio
ai file.
Qualcosa di questo tipo:
    dim TestoDaFile as string
    dim FileLibero as integer
    filelibero = freefile
    open "<nome del file da convertire>" for input as #filelibero
    TestoDaFile = Input(LOF(filelibero),filelibero)
    close filelibero
    testodafile= replace (testodafile, vblf, vbcr)
    filelibero = freefile
    open "<nome del file da convertire>" for output as #filelibero
    print #filelibero, testodafile
    close filelibero
L'ho scritto al volo senza controllare, quindi vedi tu, è solo per
dare l'idea.
Bye, G.

 oppure CR; oppure si può personalizzare?
non credo che si possa personalizzare. hai provato ad aprire il file in
binario e a usare Input$() ? se il file non è tanto grosso puoi fare una
cosa del tipo
Dim NFile As Integer
Dim arrRows() As String
Open "C:\blahblah.txt" For Binary As #NFile
    arrRows = Split(Input$(LOF(NFile), NFile), vbLf)
Close #NFile
Ciao
--
Faber

 Open "C:\blahblah.txt" For Binary As #NFile
ovviamente ci vuole
NFile = FreeFile()
prima di Open  ;)
--
Faber

Paperino,
sei uno dei pochi che offre soluzioni! I miei complimenti per la tua
disponibilità!
Nel frattempo ho scritto una funzione che acquisisse un carattere alla volta
e controllasse se era un CR, un LF o un NUL (perchè nel file c'erano anche
quelli - a fare che non lo so!!!) doveva terminare la lettura... funziona!
Per ora! Non c'è qualche funzione pronta, quindi... visto che comunque
explorer 'sto maledetto file di testo UNIX like se lo smazza senza
problemi....
Ora però, il mio problema è con le date! Yahoo mi passa delle date tipo
"31-Jan-02" (in formato europoide/americano) e devo convertirlo in qualcosa
che VB macini... ovvio che CDATE non funziona; si aspetta "31-Gen-02"!
Vorrà dire che farò uno split con carattere "-" e sostituirò a Jan-Feb-Mar
il numero del mese... finché Yahoo non si sveglierà e cambierà formato della
data...
FRUSTRANTE tutto cio!
Grazie ancora a Paperino e a coloro che hanno collaborato attivamente.
Francesco

finché Yahoo non si sveglierà e cambierà formato della data...
Ma parli sul serio ?


 ha scritto nel messaggio
news:3c8306c8...@news.tin.it...


Ribadisco comunque che è frustrante stare a indovinare quale tipo di formato
viene usato per passare un file... se viene da UNIX è fatto così che è
diverso da quello di Win che è fatto cosà.... e le date se sono americane
sono MM-GG-AA, quelle europee sono GG-MM-AA... e qual'era che era AA-MM-GG?
Uff!
F.

Ma che avevi capito?!?
Avevo capito che Yahoo deve svegliarsi.
In tutta onesta', a me sembra che sei tu che devi adeguarti.


 In tutta onesta', a me sembra che sei tu che devi adeguarti.
Ti consiglio di leggere esattamente ciò che ho scritto... giusto per evitare
sentenze del tutto strampalate!
F.

Ti consiglio di leggere esattamente ciň che ho scritto... 
ROTFL... l'ho fatto...


 Ti consiglio di leggere esattamente ciò che ho scritto...
Trattasi di frase che, letta senza una intonazione di riferimento, può
assumere 2 significati distinti. Un po' come "una vecchia porta la sbarra"
(una anziana trasporta la sbarra, o è la vecchia porta che sbarra la via?).
Sono esattemente queste le frasi che mandano in tilt  i programmi di
traduzione automatici. :-)
Ciao
*Roby*

Tornando sul discorso puramente tecnico (e al di la dei "misunderstanding" -
come ama chiamarli qualcuno) un'altra "stranezza" che ho trovato su quei
maledetti files di testo generati da yahoo è che leggendo un singolo byte
dal file con un ciclo, i caratteri sembrano intercalati da dei NULL (ascii
00)! Vi risulta? O sto dando la caccia alle farfalle?
Ciao e a presto.
Francesco


 00)! Vi risulta? O sto dando la caccia alle farfalle?
temo sia regolare. sto testando una altrui pagina di ricerca in cui facendo
copia-incolla su un txt risulta qualcosa come NumenullCognome.
con null scritto proprio "null" :)
ciao, a.