Newsgroup: it.comp.lang.visual-basic
Titolo: File di testo in colonne

Ciao a tutti
prima di addentrarmi in strumenti "sbagliati" volevo sapere secondo voi cosa
sia meglio usare per importare un file di testo nel mio applicativo.
Ho cercato già sulle mail passate se qualcuno avesse avuto il mio stesso
problema, ma alla fine non sono riuscita a capire se è meglio usare una
Listview o una MsFlexGrid.
Da premettere che non sono brava e sono una principiante pertanto quello che
mi direte sarà il "LA" per uno studio più approfondito sull'eventuale
comando!
I file di testo sono in formato txt io dovrei farli leggere all'applicativo
( che sto cercando ci creare) e dividerlo in colonne.
Purtroppo tra una parola ed un altra non ci sono virgole o simboli ma solo
spazi e non tutti i campi devono necessariamente essere presenti (Per i più
curiosi si tratta di un turno di lavoro mensile, con orari e postazioni).
Vi faccio un esempio su come è strutturato il file di testo, e  una piccola
legenda.
GG=giorno ( è scritto cosi come nell'esempio... si capisce =)  )
POSTO = sigla che può essere alfanumerica o numeri
ATTIVITA= xxyyyy (ALFANUMERICA)
H1=Orario di firma (formato hhmm)
H2=Orario inizio turno ( formato hhmm)
H3=Orario fine turno ( formato hhmm)
H4=Orario fine servizio (formato hhmm)
DA= Sigla (formato 3lettere)
A  = Sigla(formato 3lettere)
H5= Orario totale lavoro effettivo(formato può essere hhmm oppure 
hh.mm
)
H6=Orario totale servizio (formato può essere hhmm oppure 
hh.mm
)
H7=Orario difficile da spiegare (formato può essere hhmm oppure 
hh.mm
)
PERIODO: MESE ANNO
MATRICOLA    NOME     COGNOME    CASELLAAZIENDALE
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------- 
GG      POSTO                ATTIVITA'                           ORARI
POSTI                             TEMPI
H1    H2    H3    H4                 DA     A                    H5
H6       H7
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------- 
01Gi      XXX                   XXXX                          hhmm hhmm
XXX
02Ve     XXX                   XXXX                          hhmm hhmm
XXX               
hh.mm
 
hh.mm
03Sa                               RIPOSO
[CUT]............
17Sa                                RIPOSO
18DO  XXX                       XXXX                       hhmm hhmm hhmm
hhmm         XXX   XXX                
hh.mm
 
hh.mm
19Lu    XXX                       XXXX                       hhmm hhmm
XXX
20Ma  XXX                        XXXX
hhmm hhmm                     XXX                
hh.mm
 
hh.mm
 
hh.mm
21Me                                   XXXX
22Gi   XXX                         XXXX                       hhmm hhmm hhmm
XXX   XXX
          XXX                         XXXX
hhmm hhmm hhmm         XXX   XXX                
hh.mm
 
hh.mm
23Ve                                  RIPOSO
24Sa                                   RIPOSO
25DO                                 RIPOSO
26Lu                                   RIPOSO
27Ma  XXX                         XXXX                        hhmm hhmm hhmm
XXX   XXX                
hh.mm
 
hh.mm
           XXX                         XXXX
hhmm hhmm                 XXX   XXX
           XXX                         XXXX
hhmm hhmm hhmm       XXX   XXX                
hh.mm
 
hh.mm
           XXX                         XXXX                        hhmm hhmm
hhmm                 XXX   XXX
28Me  XXX                         XXXX                        hhmm hhmm hhmm
XXX   XXX
           XXX                         XXXX
hhmm hhmm hhmm       XXX   XXX                
hh.mm
 
hh.mm
 
hh.mm
 [cut]............
____________________________________________________________________________
_____________________________
Caspita se siete arrivati a leggere fino a qui vi voglio bene!! =))
Sto tentando di fare un applicazione che mi legga questo file di testo, me
lo importi un una griglia poi in un secondo momento
vi chiederò aiuto su come poter lavorare su questi dati che ho importato (
sempre che ci riesca)
In parole povere devo fare in modo di controllare che il turno mensile
rientri nei dettati contrattuali, che il totale delle ore sia giusto e via
discorrendo.
Vi ho ammorbato con questa mail per farvi capire che una volta incolonnati
questi dati mi servono per fare dei controlli quindi non mi serve solo per
visualizzarli e basta....
Come prima mail in questo newsgroup non c'è male vero =)))))
Debby ----)@

 wrote in message
news:AmjSb.14762$
VS6....@tornado.fastwebnet.it
Secondo me il metodo migliore è quello di utilizzare l'istruzione
LINE INPUT
Successivamente, puoi utilizzare una successione di istruzioni MID$ per
verificare l'esistenza e la correttezza dei dati.
Alessandro
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Secondo me non ci sono dubbi, carica tutto il testo riga per riga in una 
variabile stringa separando i vari campi con un vbTab e metti il tutto 
in una flexgrid o meglio ancora in una hflexgrid.
Cosě potrai accedere tranquillamente ad ogni cella, fare operazioni 
ecc... ecc... ecc...
ciao Max

 Debby ----)@
Cmq, visto che <sembra> che il file sia composto da righe di lunghezza
fissa, e tu conosci le posizioni di inizio e di fine di ogni singolo
campo, la procedura potrebbe essere questa:
- Leggi il file (se e' meno di 10M di dimensione, puoi trovare su
www.vb2themax.com
 una funzione che te lo carica in una botta sola);
- Visto che la suddetta funzione ti crea un array in cui ogni elemento
e' una singola riga del file, con un ciclo scorri l'array, e da ogni
riga estrai i singoli campi.
Bye by SixaM 8-]

 ha scritto nel messaggio
news:1cbe9cc8.04013...@posting.google.com...


Vi posto una risposta datami su un altro NewsGroup:
Corrado ha scritto:
Utilizzando la classe StreamReader puoi leggere riga per riga tutto il file
che potresti mettere in una datatable oppure in una matrice, il problema che
vedo è, come fai a capire come sono organizzati i dati se solo alcuni
possono essere presenti e non hai nessun delimitatore, come fai a capire che
i primi 3 dati sono GG,Posto e attività e non GG,Attività,H2? (gli altri
potrebbero essere assenti)

 wrote in message
news:Q_uSb.15815$
VS6....@tornado.fastwebnet.it

Cara Deborah, rimango della mia opinione.
Nonostante si tenda ad utilizzare codice reperibile in Forum o classi
già preparate, una lettura riga per riga del file con la successiva
scansione della variabile letta è la cosa migliore: è semplice e ti
permette di  eseguire le operazioni che preferisci nel modo più adatto!
while not eof(file)
  line input #1,q$
  d$(1)=left$(q$,5)
  d$(2)=mid$(q$,8,6)
  .................
  if instr(q$,"RIPOSO")<>"" then ..................
  if trim$(d$(1))="" then continuaturno
  d$(3)=mid$(q$,...........
wend


 ha scritto nel 
messaggio 


[cut]



Rimango della mia idea, lo metterei in una griglia almeno per i test, in 
modo che vedo il comportamento dei vari txt e successivamente deciderei 
cosa farne.
Ma poi lo devi far vedere all'utente o solo elaborarlo?
Se lo devi solo elaborare io mi creerei una sruttura in cui caricare i 
singoli campi che ridimensionata ovv. per il numero di righe del file
ciao Max

Ore piccole del Venerdi sera.
Max indubbiamente prima farň le prove su un form bello libero e per
rispondere alla tua domanda
la risposta č SI l'utente lo deve vedere. Anzi per dirla tutta dopo aver
importato il turno e dopo
che l'applicativo controlli che i dati siano giusti, (ossia verificare che
il totale delle ore di servizio e di quelle di lavoro siano giusti)l'utente
puň anche modificarlo. (Spesso succede che tra colleghi si cambiano il
turno)
Anyway my dear vado a nanna.
Quindi per riassumere devo usare una Msflexgrid  e la funzione Line Input
(suggeritami da Alex).... giusto?
Debby ----)@
[cut]


Alex pls sto diventando scema mi spieghi almeno il ragionamento da
utilizzare
io non so più che pesci prendere
Sul Form o una Griglia (mshflexgrid) e un Tasto
All'evento click del tasto ho scritto
CommonDialog1.ShowOpen
FileNum = FreeFile
FileTurno = CommonDialog1.FileName
Open FileTurno$ For Input As #FileNum
Do Until EOF(FileNum)
Line Input #FileNum, A$
.........
Loop
Close #FileNum
Al posto dei puntini le ho provate tutte. In un'etichetta riesco a mettere
il testo ma nella griglia no.
Il tuo esempio l'ho capito a metà! Ho cercato ovunque spunti o letture ma
non ho trovato nulla.
Se hai tempo e se hai voglia fammi capire come deve ragionare la funzione
almeno mi metto a studiare
i comandi giusti!!!
Scusa il disturbo ma sono avvilita dalla mia incapacità!
Debby ----)@


 
Ti rispondo volentieri: anch'io ho ricevuto utili consigli.
Prova con le linee che ho aggiunto al tuo listato e dimmi se riesci.
Ciao.
