Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

estrarre archivi ZIP con VB 2010

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

estrarre archivi ZIP con VB 2010

Messaggioda KillerPenguin » mar apr 10, 2012 6:20 pm

salve, oggi sto facendo un sacco di domande [rolleyes] credo che questa sia l'ultima:
come faccio ad estrarre un archivio zip in VB???
vi ringranzio [grazie]
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: estrarre archivi ZIP con VB 2010

Messaggioda M@ttia » mar apr 10, 2012 7:05 pm

Non credo che nel .NET sia incluso un tool per (un)zippare files. La soluzione più semplice che mi viene in mente è quella di utilizzare un software terzo, come 7zip (gratuito, disponibile anche in versione no-install), che offre anche l'exe che è la versione a linea di comando. A quel punto basta copiarsi l'exe 7zip.exe (e forse una dll) nella cartella assieme al proprio eseguibile generato con VB 2010, e da quest'ultimo far eseguire il 7zip.exe quando si vuole estrarre un file.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: estrarre archivi ZIP con VB 2010

Messaggioda M@ttia » mar apr 10, 2012 7:17 pm

Nello specifico, scarica 7zip portable da QUI ed estrai i files.
Vai poi nella cartella "App" e copiati i due files 7z.exe e 7z.dll assieme all'eseguibile del tuo programma (creato con VB).

Nel codice inserisci poi:
Codice: Seleziona tutto
System.Diagnostics.Process.Start("7z.exe", "e C:\NomeFile.zip")


Se inoltre vuoi anche specificare il percorso dove estrarre, allora:
Codice: Seleziona tutto
System.Diagnostics.Process.Start("7z.exe", "e C:\NomeFile.zip -oC:\MiaCartella")
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Re: estrarre archivi ZIP con VB 2010

Messaggioda developerwinme » mer apr 11, 2012 5:27 pm

Non so se sia effettivamente possibile farlo con 7zip, ma si dovrebbe anche poter usare una DLL da importare direttamente nel codice, così da avere un maggiore controllo sul processo.

Potrebbe essere un argomento interessante da approfondire. [^]
PC: ASUS X53S (Intel Core i7-2670QM 2.20 Ghz, RAM 8 GB, NVIDIA GeForce GT520MX, Windows 8 Pro)
Mobile: Nokia Lumia 710 (CPU 1,4 Ghz, RAM 512 MB, Windows Phone 7.8)
--
developerwinme.wordpress.com
Avatar utente
developerwinme
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5014
Iscritto il: mar dic 30, 2008 7:00 pm
Località: Como

Re: estrarre archivi ZIP con VB 2010

Messaggioda KillerPenguin » mer apr 11, 2012 8:19 pm

Perfetto, l'ho provato e funziona.... però ho un problema...
come mai se lo scrivo in questo modo non va?
Codice: Seleziona tutto
System.Diagnostics.Process.Start("7z.exe", "e " & TextBox1.Text & " -o" & Application.StartupPath)


completo col dire che nella textbox1.text vi è il percorso dell'archivio da estrarre e ho già copiato il file 7z.exe e 7z.dll nella cartella dove si trova l'eseguibile....

ho inoltre provato a sostituire le "£" con i "+" ma nnt [V]
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: estrarre archivi ZIP con VB 2010

Messaggioda M@ttia » gio apr 12, 2012 12:27 am

La sintassi è
Codice: Seleziona tutto
System.Diagnostics.Process.Start("NomeEseguibile.exe", "Eventuali Parametri")


Se vai a costruire la seconda stringa così, le virgolette vengono usate per definire un testo nell'unione e non come parte dell'input...

Probabilmente dovresti crearti PRIMA la stringa MieiParametri concatenando tutto e poi mandare quella fra virgolette e basta (anziché costruirla al volo nella chiamata stessa).


developerwinme ha scritto:Non so se sia effettivamente possibile farlo con 7zip, ma si dovrebbe anche poter usare una DLL da importare direttamente nel codice, così da avere un maggiore controllo sul processo.
Perché non dovrebbe essere possibile? L'exe da linea di comando è "ufficiale" (con tutta la guida per i parametri e la sintassi) e da codice non si va altro che eseguire quell'EXE coi giusti parametri (come si farebbe da un prompt dei comandi, niente di più). Con una DLL sarebbe poi più elegante ed integrato, ma non so se 7zip ne offra, né come andrebbe poi interfacciata...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: estrarre archivi ZIP con VB 2010

Messaggioda developerwinme » gio apr 12, 2012 6:41 am

M@ttia ha scritto:Perché non dovrebbe essere possibile?

MI riferivo all'interfacciamento tramite DLL. [;)]

M@ttia ha scritto:Con una DLL sarebbe poi più elegante ed integrato, ma non so se 7zip ne offra, né come andrebbe poi interfacciata...

Esattamente quello che volevo dire, ma, come giustamente hai sottolineato, è tutta da verificare la facilità di integrazione.
PC: ASUS X53S (Intel Core i7-2670QM 2.20 Ghz, RAM 8 GB, NVIDIA GeForce GT520MX, Windows 8 Pro)
Mobile: Nokia Lumia 710 (CPU 1,4 Ghz, RAM 512 MB, Windows Phone 7.8)
--
developerwinme.wordpress.com
Avatar utente
developerwinme
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5014
Iscritto il: mar dic 30, 2008 7:00 pm
Località: Como

Re: estrarre archivi ZIP con VB 2010

Messaggioda KillerPenguin » ven apr 13, 2012 6:10 pm

M@ttia ha scritto:La sintassi è
Codice: Seleziona tutto
System.Diagnostics.Process.Start("NomeEseguibile.exe", "Eventuali Parametri")


Se vai a costruire la seconda stringa così, le virgolette vengono usate per definire un testo nell'unione e non come parte dell'input...

Probabilmente dovresti crearti PRIMA la stringa MieiParametri concatenando tutto e poi mandare quella fra virgolette e basta (anziché costruirla al volo nella chiamata stessa).


forse ho capito male comunque:
ho creato una variabile stringa:
Codice: Seleziona tutto
 Dim x As String

e successivamente ho dato questo comando nella funzione click di un button
Codice: Seleziona tutto
x = "e " & TextBox1.Text & "-o" & IO.Path.GetDirectoryName(Application.ExecutablePath) & "\"
        System.Diagnostics.Process.Start("7z.exe", x)

purtroppo non ho ottenuto il risultato desiderato [V]
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: estrarre archivi ZIP con VB 2010

Messaggioda M@ttia » ven apr 13, 2012 7:01 pm

Eh qui purtroppo avrei bisogno di sperimentare un po' per vedere come gestisce i parametri e le stringhe con gli apostrofi... nuovamente non ho VB installato (l'ho solo sul PC a Zurigo, e mi pare un po' eccessivo installare il paccone qua solo per testare una stringa [std]). Purtroppo ti posso solo consigliare di "giocare" a provare tutte le combinazioni/tentativi finché non fa, perché una risposta precisa da copia/incolla non te la saprei dare al momento... [:)]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: estrarre archivi ZIP con VB 2010

Messaggioda developerwinme » ven apr 13, 2012 7:12 pm

Killer Penguin ha scritto:ho creato una variabile stringa:

Nelle tue intenzioni cosa dovrebbe andare nella variabile in questione? [uhm]
PC: ASUS X53S (Intel Core i7-2670QM 2.20 Ghz, RAM 8 GB, NVIDIA GeForce GT520MX, Windows 8 Pro)
Mobile: Nokia Lumia 710 (CPU 1,4 Ghz, RAM 512 MB, Windows Phone 7.8)
--
developerwinme.wordpress.com
Avatar utente
developerwinme
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5014
Iscritto il: mar dic 30, 2008 7:00 pm
Località: Como

Re: estrarre archivi ZIP con VB 2010

Messaggioda M@ttia » ven apr 13, 2012 7:28 pm

Il suo problema è che chiamando
Codice: Seleziona tutto
System.Diagnostics.Process.Start("7z.exe", "e C:\NomeFile.zip -oC:\MiaCartella")

funziona, mentre chiamando
Codice: Seleziona tutto
System.Diagnostics.Process.Start("7z.exe", "e " & TextBox1.Text & " -o" & Application.StartupPath)

(ovvero "costruendo" il secondo parametro concatenando varie cose) no.
Il mio suggerimento era di concatenare quelle cose PRIMA in una Stringa, e poi dare la stringa come parametro. Apparentemente non va.



Una cosa che mi viene in mente ora: hai provato a mettere i " " anche nella stringa?
Li puoi inserire con "" (doppio per metterne uno), oppure con il codice ASCII Chr(34).
Cioè per ottenere ad esempio il testo
"E lei mi disse "va bene" e se ne andò"

(cioè con le virgolette all'interno della stringa) puoi fare sia
Codice: Seleziona tutto
TextBox1.Text = "E lei mi disse ""va bene"" e se ne andò"

che
Codice: Seleziona tutto
TextBox1.Text = "E lei mi disse " & Chr(34) & "va bene" & Chr(34) & " e se ne andò"
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: estrarre archivi ZIP con VB 2010

Messaggioda Andy94 » ven apr 13, 2012 7:36 pm

Il mio suggerimento era di concatenare quelle cose PRIMA in una Stringa, e poi dare la stringa come parametro.

Ho avuto modo di accorgermi lavorando molto con ffmpeg allo stesso modo che di fatto è abbastanza inutile: se la stringa è costruita male lo sarà in entrambi i casi.

Quello che ti consiglio è stamparti a debug (con Debug.WriteLine) quella roba lì e controllare che ci sia una stringa di parametri valida. In questo modo capirai se ci sono argomenti invalidi, apici di troppo, ecc. Se non coincide con quello che chiami direttamente saprai dove sistemare. [^]

[ciao]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: estrarre archivi ZIP con VB 2010

Messaggioda KillerPenguin » mar ago 14, 2012 6:51 pm

rispolvero questo topic per far notare che le cartelle all'interno dell'archivio vengono estratte e vengono svuotate nella directory principale... ho dato un occhiata alla guida di 7-zip (scaricabile qui) ma non sono riuscito a trovare un compromesso. Sapete darmi una mano?
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising