Newsgroup: it.comp.lang.visual-basic
Titolo: Restituire 1 riga alla volta con Line input [in modulo] possibile?

...mi spiego...
debbo trattare dei file txt in vari modi...
con una combo seleziono modo1,modo2,modo...
in base al modo mi posiziono in una dir e scelgo il file mod1.txt
..a questo punto pensavo di mandare il CommonDialog1.FileName
in un modulo con -public function aprifile (filename as string)-
con il compito di aprire il file e leggerlo con line input una riga
alla volta...ogni riga deve essere processata dalla sub che ha inviato
il filename (sub modo1(),sub modo2(),...) ogni su sà cosa farsene
ma ho solo un punto di estrazione....
sono stato chiaro ???
è possibile ? se sì come?
--
--------------------------------------------
"Che la vostra memoria non s'imboli
  nel primo mondo da l'umane menti,
  ma s'ella viva sotto molti soli "
--------------------------------------------
molte onorevoli grazie a Voi
^____^
Luca

 ha scritto nel
messaggio news:zAAB8.17424$5k4.4...@twister2.libero.it...

Forse non ho capito la domanda, ma la line input tratta una riga alla volta,
quindi leggi il file (una riga), processi e passi alla successiva.
Ciao Roberto - Syd


...in effetti non sono stato molto chiaro, allora:
se non ho capito male, in questo caso quì sotto la funz aprifile restituisce
a sub modo1 solo l'ultima riga
del file, all'interno di aprifile giusto?
...ecco io vorrei sapere se è possibile passare alle varie sub tutte le
righe 1 alla volta...(?)
dim FileName as string
FileName=CommonDialog1.FileName
sub modo1()
...scelgo il file da usare in base al trattamento...
aprifile filename
if aprifile >0 then 'controllo se la riga che la funz aprifile ha estratto
dal file e rimandato al mittente....
 conta=conta+1
end if
if conta = pari then ' come si controlla il pari o dispari me lo cercherò...
    fileelaborato= fileelaborato & aprifile
end if
...
end sub
sub modo2()
....questa estrarrà solo i dispari MA sempre usando la funz aprifile
end sub
sub modo3()
....questa estrarrà solo ogni 3 MA sempre usando la funz aprifile
end sub
....
public function aprifile (filename as string)
    Open FileName For Input As #1
        Do Until EOF(1)
            Line Input #1, aprifile
        Loop
Luca


Quello che ho capito è questo :
ogni riga del file deve essere processata da una sub diversa, se è così
secondo me dovresti testare all'interno della funzione aprifile di che riga
si tratta e quindi passarla all routine di competenza:
public function aprifile (filename as string)
    dim iCont as Integer
     Open FileName For Input As #1
         iCont = 0
         Do Until EOF(1)
             Line Input #1, aprifile
            iCont=iCont+1
            select case iCont
                Case 1
                    modo1(riga)
                Case 2
                    modo2(riga)
                case 3
                      ...
                      ...
            end select
         Loop
Ciao Roberto - Syd


...prima di tutto ti debbo ringraziare per la tua cortesia e pazienza, però
cio che volgio...
è avere tante sub quanti sono i "lavori" da fare es:
sub leggiilfilecliente
sub leggiilfilefornitore
sub leggiilfilemateriale
.....
in base al lavoro che debbo fare (es. debbo leggere il tel di un cliente)
apro un file e dalla sub leggiilfilecliente lo mando all'estrazione ->
public function aprifile (filename as string)
questa funzione dovrebbe passarmi alla sub leggiilfilecliente la 1° riga,
sub leggiilfilecliente la processa
poi dovrebbe passarmi la 2° riga, sub leggiilfilecliente la processa poi
dovrebbe passarmi la 3° riga,....
...è possibile?
...tutto questo SOLO perchè così ogni sub si può gestire le varie righe come
deve...
...è logico?
...forse questa volta sono riuscito a chiarire...(?)
...lo sò, ho poche conoscenze VB e molta confusione ;-)
...a presto,
Luca

 sub leggiilfilemateriale
Ciao,
non sono sicuro di aver capito :) pero' io farei cosi':
public sub ApriFile(nome as string, tipo as integer)
    ...
end sub
semplicemente leggi il file nella maniera usuale, poni tutte le righe lette
in una matrice che avrai dimensionato in precedenza
dim MatriceStringhe() as string
e che fai ridimensionare ad ogni riga letta con
redim preserve MatriceStringhe(conta)
mentre la variabile integer "tipo" ti determina il tipo di funzione con cui
vuoi far processare le stringhe
es.
Select case tipo
case 1:LeggiIlFileCliente(MatriceStringhe)
case 2:LeggiIlFileFornitore(MatriceStringhe)
...
Spero ti serva a qualcosa...
Ciao!
- SonicBoom -


...uhhh...forse... :-)
...dimmi se ho capito:
 me ne frego di come andrà trattato il file *.txt e lo estraggo SEMPRE TUTTO
e normalemente
però ogni riga la "ritaglio" e la appiccico in una "riga" di una matrice,
una riga alla volta
così avrò tutte le righe separate
dopodichè posso mandare la matrice a chi mi pare che ne farà ciò che vuole
(tiene solo le pari, solo le dispari, 2 si e 1 no, ecc...)
...se è così è il risultato che volevo ottenere....
mi tuffo a studiare/ripassare le matrici... ;-)))))
...ehmmm.. ne approffito... non è che puoi dare un'occhio al mio post
leggere *.txt da 10mb blocca vb!! help di martedì 7 maggio 2002 19.50
anche lì ho qlc problemino di stringhe & co.  ?
...a presto...
...e...
molte onorevoli grazie a tè oohh saggio
^__^
Luca

 leggere *.txt da 10mb blocca vb!! help di martedě 7 maggio 2002 19.50
Mi pare che gia' ti abbia risposto qualcuno! :)
Ciao,
- SonicBoom -