🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: free.it.visual-basic
Article #260

Re: Ciclo 'For each file in.....'

#260
From: Rafunk
Date: Fri, 17 Nov 2006 15:28
112 lines
4874 bytes
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

-----------------------------------------------------
Funk: cooler than the other side of the pillow.
Technical Details
Message-ID: <455dd521$0$3208$4fafbaef@reader2.news.tin.it>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!aotearoa.belnet.be!news.belnet.be!newsgate.cistron.nl!xs4all!feeder.news-service.com!feeder.news-service.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!nntp.eutelia.it!feeder.news.tin.it!spool.news.tin.it!not-for-mail
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>

Show Full Headers
Complete Article Headers
X-Google-Thread: f94ee,1434dad1ca015974
X-Google-Attributes: gidf94ee,public
X-Google-Language: ITALIAN,CP1252
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!aotearoa.belnet.be!news.belnet.be!newsgate.cistron.nl!xs4all!feeder.news-service.com!feeder.news-service.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!nntp.eutelia.it!feeder.news.tin.it!spool.news.tin.it!not-for-mail
From: "Rafunk" <zero@none0.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>
Subject: Re: Ciclo 'For each file in.....'
Date: Fri, 17 Nov 2006 16:28:27 +0100
MIME-Version: 1.0
Content-Type: text/plain;
 charset="Windows-1252"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Lines: 113
Message-ID: <455dd521$0$3208$4fafbaef@reader2.news.tin.it>
Organization: TIN.IT (http://www.tin.it)
X-Comments: Please send technical notifications to newsmaster@tin.it
NNTP-Posting-Host: 82.50.196.150
X-Trace: 1163777313 reader2.news.tin.it 3208 82.50.196.150:4108
X-Complaints-To: Please send abuse reports to abuse@tin.it