:ciao:
sto usando un comando tipo:
shell cp -R /Origine /Destinazione
Come faccio a rilevare quando la copia è finita?
Ho provato ad usare la proprietà Busy della classe Application, avendo cura di impostare il componente qt4, ma il comando viene seguito subito e quindi busy torna a 0 subito e non riesco a capire quando la copia è terminata. :-\
Qualche idea?
:)
:ciao:
Come faccio a rilevare quando la copia è finita?
Non entro nella questione su Dir( ), pur condividendo le perplessità di Gianluigi sull'uso di "Shell", qualora sia possibile ottenere il medesimo risultato con Gambas.
Ad ogni modo, per ottenere quanto da te richiesto, devi porre alla fine ed all'esterno della riga di comando di Shell la semplice istruzione Wait .
http://gambaswiki.org/wiki/lang/wait?l=it
Esempio:
Public Sub Main()
Dim tempus As Date
tempus = Now
Shell "cp -r /percorso/cartella/di/origine /percorso/copia/cartella" Wait
Print "Copia terminata in: "; CStr(Date(0, 0, 0, 0, 0, 0, DateDiff(tempus, Now, gb.Millisecond)))
End
Un uso reale lo puoi vedere ad esempio nei miei codici Gambas di creazione delle librerie esterne condivise .so, scritte in C; laddove la compilazione con Shell prevede appunto quella soluzione con Wait per attendere il termine della procedura di compilazione da parte dell'apposito programma esterno "gcc":
Ad esempio:
......
Private Procedure Creaso()
File.Save("/tmp/Alloca.c", "#include <alloca.h>" &
"\n\n" &
"char * Inizializza_Alloca (size_t dimen) {" &
"\n\n" &
" char * c;" &
"\n\n" &
" c = alloca(dimen);" &
"\n\n" &
" return c;" &
"\n\n}")
Shell "gcc -o /tmp/Alloca.so /tmp/Alloca.c -shared" Wait ' <----- Resta in attesa fino a quando il programma gcc non avrà terminato la compilazione della libreria esterna !
End
E chi lo ha detto? Devi studiarti DIR
OK Capitano! :D
Ho cercato di usare COPY ma nella wiki:
http://gambaswiki.org/wiki/lang/copy (http://gambaswiki.org/wiki/lang/copy)
l'affermazione è chiara!
Note that you cannot copy directories recursively with this function.
Anche a me non piace usare shell...
Grazie Vuott, magari inizio col Wait poi... con qualche colpo di fioretto alla Fiordelisi.... :P
:ciao:
??? OK cosa, non hai letto la wiki di Dir ???
:hatecomputer:
giusto per non dartele in testa... ;D
Guarda un po qui:
Public Sub Main()
Dim Directory As String
Dim Files As String[]
Dim FileName As String
Directory = System.User.Home &/ "Documenti"
Files = Dir(Directory, "*.odt")
Files.Insert(Dir(Directory, "*.pdf"))
Files.Insert(Dir(Directory, "*.txt"))
If Not Exist(User.Home &/ "Mie Copie") Then Mkdir User.Home &/ "Mie Copie"
For Each FileName In Files
Print FileName
''Qui potresti copiare con:
' Copy "tutto/il/percordo" &/ filename To "tutto/il/percorso/dove/vuoi/copiare" &/ "EventualeTuoNuovoNome(creato ricorsivamente)" & "." & File.Ext(FileName)
'Più semplicemente lasci gli stessi nomi:
Copy System.User.Home &/ "Documenti" &/ FileName To User.Home &/ "Mie Copie" &/ FileName
Next
End