Article View: free.it.visual-basic
Article #261Re: Ciclo 'For each file in.....'
From: AntFast
Date: Fri, 17 Nov 2006 17:57
Date: Fri, 17 Nov 2006 17:57
148 lines
5896 bytes
5896 bytes
"Rafunk" <zero@none0.it> ha scritto nel messaggio
news:455dd521$0$3208$4fafbaef@reader2.news.tin.it...
> AntFast wrote:
>> "Rafunk" <zero@none0.it> ha scritto nel messaggio
>> news:455d7d69$0$3205$4fafbaef@reader2.news.tin.it...
>>> AntFast wrote:
>>>> "Rafunk" <zero@none0.it> ha scritto nel messaggio
>>>> news:455c525a$0$7637$4fafbaef@reader1.news.tin.it...
>>>>> AntFast wrote:
>>>>>> Ciao a tutti.
>>>>>> Come si fa riportare il controllo all'inizio del ciclo
>>>>>> 'for each file in ......'
>>>>>> Cioe', se si e' verificata una condizione, deve saltare
>>>>>> il codice che viene a valle (codice2) e ripartire dal
>>>>>> 'for each file in ......'
>>>> ..[cut..]
>>>>
>>>>> Sempre che tu non voglia reinizializzare il loop, ripartendo dal
>>>>> primo elemento.
>>>>> In tal caso sei costretto ad usare GoTo (che si dovrebbe usare con
>>>>> parsimonia
>>>>> per evitare di rendere poco leggibile e "spaghettoso" il codice).
>>>>
>>>> Ciao Raf
>>>> "For each file in ....... " non significa che per ogni file del
>>>> gruppo esegue il codice a valle ?
>>>
>>> S�.
>>>
>>>> Non capisco perche' con l'istruzione GoTo debba
>>>> reinizializzare il loop, ripartendo dal primo elemento :-(
>>>> Non dovrebbe passare all'elemento successivo ?
>>>
>>> Mi spiego meglio. Intendevo dire: se la tua condizione deve
>>> determinare una
>>> ripartenza del loop, allora devi usare GoTo.
>>>
>>> StartLoop:
>>> for each file in fld.Files
>>> ....codice
>>> ....codice
>>> if condizione then
>>> GoTo StartLoop
>>> endif
>>> ....codice2
>>> ....codice2
>>> next
>>>
>>
>> Ciao Raf e grazie per la pazienza che mi usi..
>> Quindi, se ho ben capito, NON e' possibile passare
>> il controllo all'istruzione "for each...." dall'interno del
>> ciclo stesso.... peccato! La stessa cosa vale anche
>> per il ciclo for...next ?
>
> Evidentemente non mi sono ancora spiegato bene: intendevo dire che il GoTo
> �
> l'unico modo semplice per reinizializzare il loop (a meno di non usare 2
> loop
> nidificati, ma lasciamo stare), NON che non puoi usare GoTo in altri casi!
>
>> Secondo me, se si potesse, si snellirebbe molto di piu'
>> il codice, esempio:
>> For each.....
>> ...codice...
>> if condizione then "TORNA a forn each...." (e quindi passa
>> all'elemento successivo del gruppo)
>> ....codice...
>> ....codice...
>> if condizione2 then "TORNA a forn each...." (come sopra..)
>> ....codice...
>> ....codice...
>> next
>> Anziche' :
>> For each.....
>> ...codice...
>> if NOT condizione then
>> ....codice...
>> ....codice...
>> if NOT condizione2 then
>> ....codice...
>> ....codice...
>> end if
>> end if
>> next
>> Specialmente se le condizioni scritte sono molteplici.
>> Nel caso nostro dovremmo annidare tanti if...end if .
>> E cosi' ?
>> Ti auguro un buon fine settimana....
>> AnfFast
>
> Con GoTo si pu� fare saltare da/a qualunque punto del codice (purch� nella
> stessa sub/function)!
> Ma in questo caso non si deve tanto far saltare al For quanto al Next (che
> effettua l'incremento o il passaggio all'elemento seguente nella
> collection).
> Effettivamente in casi come questi anch'io uso il GoTo per migliorare la
> leggibilit� del codice:
>
> For each.....
> ...codice...
> if condizione then GoTo Prossimo
> ....codice...
> ....codice...
> if condizione2 then GoTo Prossimo
> ....codice...
> ....codice...
> Prossimo:
> next
>
> Buon WE pure a te.
> Ciao
>
> Raf
>
Ciao Raf
Ottima la soluzione di mandare il controllo al next.
Ora che lo, mi sento ridicolo ad averti fatto queste
domande. Grazie davvero.
Sono condizionato molto dalla conoscenza di Clipper
che ho usato per molto tempo....
In esso era:
for ......
...codice
if condizione (senza il then)
loop
endif (unito)
...codice
next
(Per uscire anticipatamente dalle procedure, dalle
sottoprocedure e dalle funzioni si usava "return")
Purtroppo, con i miei 56 anni, mi accorgo che non
sono piu' tanto elastico mentalmente.... :-(
Ti ringrazio ancora di cuore.
Due cose mi sembrano mancare, almeno per me che
comunque sono uno "smanettone" e cioe':
1) In Clipper si potevano disabilitare tante righe di codice
mettendo all'inizio del blocco di righe "/* "ed alla fine "*/"
In Vbscript occore mettere " ' " all'inizio di ogni riga.....
Non c'e' un'equivalente di Clipper ? (/* e */)
2) In Clipper c'era un programma Indent.exe che
"indentata" tutto il codice, bastava scrivere "indent 5"
e tutto il codice veniva "indentato" con 5 spazi
In Vbscript fa fatto a mano ?
Ciao Raf
AntFast
Technical Details
Message-ID:
<2Km7h.13637$mZ5.3908@tornado.fastwebnet.it>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!tornado.fastwebnet.it!53ab2750!not-for-mailReferences:
<VqP6h.9067$mZ5.239@tornado.fastwebnet.it> <455c525a$0$7637$4fafbaef@reader1.news.tin.it> <ew17h.10071$mZ5.8834@tornado.fastwebnet.it> <455d7d69$0$3205$4fafbaef@reader2.news.tin.it> <Xlk7h.12369$mZ5.8352@tornado.fastwebnet.it> <455dd521$0$3208$4fafbaef@reader2.news.tin.it>Show Full Headers
Complete Article Headers
X-Google-Thread: f94ee,1434dad1ca015974 X-Google-Attributes: gidf94ee,public X-Google-Language: ITALIAN,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!tornado.fastwebnet.it!53ab2750!not-for-mail From: "AntFast" <cianto@fastwebnet.it> Newsgroups: free.it.visual-basic References: <VqP6h.9067$mZ5.239@tornado.fastwebnet.it> <455c525a$0$7637$4fafbaef@reader1.news.tin.it> <ew17h.10071$mZ5.8834@tornado.fastwebnet.it> <455d7d69$0$3205$4fafbaef@reader2.news.tin.it> <Xlk7h.12369$mZ5.8352@tornado.fastwebnet.it> <455dd521$0$3208$4fafbaef@reader2.news.tin.it> Subject: Re: Ciclo 'For each file in.....' Lines: 152 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-RFC2646: Format=Flowed; Original Message-ID: <2Km7h.13637$mZ5.3908@tornado.fastwebnet.it> Date: Fri, 17 Nov 2006 18:57:24 +0100 NNTP-Posting-Host: 1.242.164.53 X-Complaints-To: newsmaster@fastweb.it X-Trace: tornado.fastwebnet.it 1163786238 1.242.164.53 (Fri, 17 Nov 2006 18:57:18 CET) NNTP-Posting-Date: Fri, 17 Nov 2006 18:57:18 CET