Newsgroup: it.comp.appl.access
Titolo: Ritardo (non mestruale)

Ho una routine che cicla su un directory per processare tutti i file .gz in 
essa contenuti.  Quando li scompatto perň, se un file č sopra i 2 MB di 
grandezza, la riga successiva non trova il file scompattato pronto e va in 
errore. Ho provato ad imbottire tutto di doevents, ma non cambia nulla. 
L'unica sarebbe inserire un ritardo forzato di qualche secondo, ma dovrei 
calcolare a spanne il potenziale ritardo dato che potrei avere file anche di 
10/15 MB e per di piů rallenterei tutto inutilmente quando invece i file 
sono di pochi Kb.
C'č un modo per interrompere il flusso fino a che non č stata completato lo 
scompattamento?
Grazie.
 
L. 
 

 
 
 
 
 
 
-- 
Paolo opg
 
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 L.
 
 
Basta che fai attendere finchè è in esecuzione il processo che scompatta
il file (7zip? winrar? ....)
Una function controlla se il processo sta girando:
 
Public Function Finito() As Boolean
    Dim obj As Object
    Finito = True
    For Each obj In GetObject("winmgmts:").ExecQuery _
        ("SELECT * FROM Win32_Process WHERE Name=""7zip.exe""")
        If obj.Handle > 0 Then Finito = False
    Next
End Function
 
 
Nel corpo del programma inserisci il ritardo:
   While Not Finito: DoEvents: Wend
 
Ti consiglio anche di aggiungere un secondo fisso di ritardo, per dare il
tempo al processo di scompatazione di partire, altrimenti la function
potrebbe non trovarlo in esecuzione e pensare che sia già finito:
 
   <avvia la scompattazione>
   T = Timer + 1
   While T > Timer: DoEvents: Wend
   While Not Finito: DoEvents: Wend
 
Ciao.
-Marco-
 
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 hai dato un po' troppo pochi dettagli...
 
Hai ragione, forse non era chiaro che non mi limitavo a scompattare i file! 
Il ciclo scompatta il file e poi lo apre per eseguire una serie di 
operazioni prima di passare al file successivo.
Grazie.
 
L.
 
 

   While Not Finito: DoEvents: Wend
 
Direi che hai centrato il problema e anche la soluzione, grazie!
Ciao.
 
L.
 
 
 

"Luciano \(DOC\)" <lucia...@luciano.doc> wrote in
news:jkcd8a$75l$
1...@speranza.aioe.org
: 

a me viene un dubbio: non e' che il tuo problema dipende dal
funzionamento previsto di winrar (ma anche di winzip)? 
 
per scompattare usano una directory intermedia; i files vengono copiati
a destinazione in un secondo momento solo se l'operazione termina con
successo. 
 
se e' cosi', quello che ti fa saltare il giro e' la copia dei files,
operazione delegata al so quando winrar e' gia' chiuso. 
 
se il problema e' quello, elimini la causa usando tool da riga di
comando, che di solito non usano la temp intermedia. 


 comando, che di solito non usano la temp intermedia.
 
Sulle macchine c'è Winrar, è standard aziendale, installare altre cose 
creerebbe problemi, e alla luce della soluzione proposta da Marco non è 
necessario.
Sarebbe invece interessante leggere il file senza salvarlo, ho cercato fra 
le opzioni di Winrar ma non l'ho trovato. A me serve solo di leggere alcune 
dati nel file, a fine ciclo lo cancello.
Grazie.
 
L.
 
 

On 21 Mar, 08:55, 
marco.pizzamig...@gmail.com
 (Marco Pizzamiglio)
wrote:

Io avevo anche questa chiamata ad una SHELL Sincrona... che ho copiato
da un suggerimento di Giorgio Rancati:
 
Function ShellEX(ByVal Percorso As String, _
            ByVal windowstyle As Integer, _
            ByVal Wait As Boolean) As Boolean
 
     On Error Goto Err_Shell
     Dim wshell As Object
 
     ShellEX=False
     Set wshell = CreateObject("WScript.shell")
     wshell.Run Percorso, windowstyle, Wait
 
     Set wshell = Nothing
     ShellEX=true
Exit_Here:
     Exit Function
Err_Shell:
     Resume Exit_Here
End Function
 
Credo possa essere equivalente...
 
@Alex


non devi installare niente
 
invece di usare C:\Programmi\WinRAR\WinRAR.exe
usi
invece di usare C:\Programmi\WinRAR\RAR.exe
 

 @Alex
 
 
No, questa è meglio perchè attende la chiusura della specifica istanza di
winrar lanciata da codice. Il sistema che ho postato io cerca un qualsiasi
processo il cui nome sia "winrar" perciò se mentre il database esegue il
suo lavoro di scompattazione l'utente apre manualmente un altro winrar la
function si fermerà ad attendere che questo venga chiuso.
Quindi consiglierei di utilizzare questa Function, che non risente di tale
problema.


 winrar lanciata da codice. Il sistema che ho postato io cerca un qualsiasi
 
Grazie ad entrambi. Di questa però non ho compreso bene il funzionamento, o 
meglio le variabili da passargli.
Percorso suppongo sia path e parametri di winrar (o equivalente);
windowstyle ipotizzo: se visibile o no la finestra?
Wait cos'è?
 
L.
 
 

 L.
 
Percorso = Path del File da lanciare
windowstyle = Modalità di apertura della Finestra(Minimizzata,
Massimizzata, Ridotta Icona, Non Visibile...)
Wait = True(Rende SINCRONO il processo)/False(Rende Asincrono il
Processo)
 
Ciao
@Alex

 Processo)
 
Funziona alla grande, grazie di nuovo a tutti.
 
L.
 
 

 L.
 
Allora siamo a 2 caffè...
;-)
 
Sarebbe già buono riuscire a venire a Roma... potremo chiamare anche
Sergio ed A.C.(non se lo merita molto con quei baffi....) l'ultima
volta
abbiamo pulito il piatto con il pane...
 
Ciao
@Alex

 abbiamo pulito il piatto con il pane...
 
Fate un fischio, sono sempre volentieri disponibile.
Ciao.
 
L.