Newsgroup: it.comp.lang.delphi
Titolo: attendere termine procedura DosCommand

Dunque come suggerito dal gruppo ho usato DosCommand per
il dump del mysql.. ora funziona come si deve e di questo ringrazio
tutti.
Ho un piccolo altro fastidio ma qui non ho esperienza su thread
e processi e quindi abbiate pazienza.
In pratica vorrei attendere che DosCommand.Execute termini l'esecuzione
per poi procedere a copiare il file generato in altro path.
Per ora ho risolto utilizzando la Sleep() ma non mi sembrava la cosa 
migliore quindi ho pensato a thread e processi purtroppo (ho iniziato a 
dicembre lo studio di delphi e ho dovuto pure sviluppare una 
applicazione non è una scusante ma....) sò a malapena cosa sono.
Se fosse possibile ci vorrebbero 2 righe di codice giusto per iniziare a 
  capirci qualcosa.
Ho googlelato di quà e di là trovando si qualcosa ma mi confonde un pò 
le idee.
Omega

Omega
	Ciao
	MassimoB
 
---------------------------------
http://www.massimobeschi.it/
---------------------------------
Se tu pagare come dici tu ...
Io lavorare come dico io ...
Se tu pagare come dico io ...
Io lavorare come dici tu ...
---------------------------------

 	MassimoB
Ops scusami ma dopo lo stress dello shellexecute e aver provato con 
successo e in tre secondi il DosCommand mi sono proprio scordato del
tuo suggerimento. Umilmente chiedo venia !!!
Cmq non mi dispiacerebbe affrontare l'argomento citato ... suggerimenti 
(che questa volta vedo di seguire alla lettera) ?!?!
Grazie ancora.
Omega

 dell'esecuzione del comando stesso.
  Mentre il metodo Execute2 è sincrono, cioè aspetta che finisca
ok ma stai parlando del DosCommand ?
perchè Execute2 non compare nella lista delle funzioni ma compare solo
ExecuteAction che trà l'altro fa parte della classe TBasicAction.
Forse non ho la stessa versione (2.0) ho provato anche ad impostare la 
priority (su tutte quelle disponibili) ma nulla.
Info ???
Omega

Mi sono assentato per quasi tutta la settimana ed ho letto solo stasera
delle tue vicissitudini.
Hai risolto tutto o non ancora?
Giovanni Caramia

Comunque non so che problemi hai avuto con shellexecute.
Supponiamo che tu voglia eseguire il backup del database 'Test' ed il
file di script risultante lo vuoi chiamare e scrivere in:
C:\xx\bck.sql,
Supponiamo che il tuo batch sia:
mysqldump -uroot -ppassword  --extended-insert %1 >%2 e che si trovi
nella cartella c:\xx
l'istruzione shellexecute dovrà essere:
shellexecute(Handle,'open','c:\xx\bckdb.bat','test
c:\xx\pippo.sql','',sw_shownormal);
Non ho mai usato il componente consigliatoti da Massimo, anzi lo
proverò alla prima occasione, per cui non so aiutarti in questa ultima
tua fase.
Io ho sempre usato il gemello (credo) presente nelle Jedi (Palette Jv
NonVisual) denominato JvCreateProcess che consente di lanciare sia
programmi che comandi ed inoltre ha la gestione del WaitForTerminate.
Se hai problemi posta ancora 
Giovanni Caramia

riscrivo perchè vedo che una volta postato va a capo proprio nel punto
critico:
...'open','c:\xx\bckdb.bat','test c:\xx\bck.sql',...


Grazie ancora dell'esempio lo provo quanto prima. Attendo anche info sul 
la procedura Execute2 (non trovata) del DosCommand che ho trovato 
semplice e veloce da usare.
Per le Jedi ho letto che le usano in molti portano molti benefici ?
Quasi quasi.......
Omega

Info ???
Ok qui o toppato io :-s sorry. :P
http://maxxdelphisite.free.fr/doscmd.htm
trovi due versioni modificate di DosCommand, quella che
serve a te è quella modificata da Take che ha Execute2.
Mentre con l'altra (che non ho mai provato) puoi
scrivere questo codice dopo l'Execute per rendere la
procedura sincrona rispetto al comando eseguito.
DosCommand.Execute; 
while DosCommand.IsRunning do
  Application.ProcessMessage;


.... Jedi 3.0, io le uso abbastanza spesso. Si tratta di componenti VCL
e librerie di funzioni utili e ben fatte.
Giovanni Caramia

   Application.ProcessMessage;
Ok cmq ho sostituito la versione con quella modificata e tutto bene.
Grazie
Omega


ok grazie vado a cercarle.
Omega

Le Jedi sono librerie ricche di componenti e funzioni che possono
essere utili in diverse occasioni.
Scaricati la versione 3.0 da SourceForge. Ritengo che tra i prodotti
free siano i migliori.
Giovanni Caramia


Grazie ho fatto !!!
Omega