Ciclo While C# convertito in VB non funziona!

mercoledì 15 aprile 2009 - 15.40

MagoDaniel1981 Profilo | Newbie

Buongiorno a tutti, ho trovato in giro per la rete un esempio di come zippare autonomamente file sul server. Di seguito il frammento di codice c# che effettua l'inserimento dei file nello stram:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il mio problema è che devo convertire il tutto in VB.NET e l'ho già fatto, l'unica riga che non capisco come convertire è quella del ciclo while, per capirci...

while((len = fis.read(buffer)) >= 0) { zos.write(buffer, 0, len); }

diventerebbe

While ((len = fis.read(buffer)) >= 0) zos.write(buffer, 0, len) End While

Peccato che il mio ciclo s'incarta e gira all'infinito in quanto la condizione del while sembra essere sempre vera. Ma in realtà non capisco esattamente cosa faccia in C#, per questo non sto riusciendo a tradurla; non capisco perchè (len = fis.read(buffer)) restituisce un booleano o sbaglio? E quindi come fa ad essere se True >= 0?
Qualcuno può darmi una mano per cortesia?

Grazie anticipatamente.

Daniel

alx_81 Profilo | Guru

>Buongiorno a tutti,
ciao
>Qualcuno può darmi una mano per cortesia?
Dim len As Integer = 0 Do While (len = fis.Read(buffer, 0, 1024) >= 0) zos.write(buffer, 0, len) Loop fis.Close

ho decompilato con .net reflector di red gate (che ti consiglio per capire come convertire) una dll scritta in c# e ho ottenuto il codice sopra.
Puoi scaricarlo da qui:
http://www.red-gate.com/products/reflector/

>Grazie anticipatamente.
di nulla!
>Daniel

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

MagoDaniel1981 Profilo | Newbie

Ti ringrazio molto per l'interessamente e per il consiglio.
Ho risolto con un codice leggermente diverso che sembra comunque funzionare. Lo posto qui di seguito.
Grazie comunque.

Daniel

While ((len) >= 0) zos.write(buffer, 0, len) len = fis.read(buffer) End While
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5