[Projet SUIVI] Attendre la fin d'un processus..

Attendre la fin d'un processus.. [Projet SUIVI] - Delphi/Pascal - Programmation

Marsh Posté le 09-05-2003 à 10:21:23    

Salut!
Bon, comme j'en avais parlé, je vais donc vous exposer
un peu mon petit projet.
Je dois donc réaliser une application qui permette
d'envoyer des fichiers par mail, FTP, disquette, CD...
J'ai différentes tables Paradox qui contiennent
les contacts, destinataires...
 
 
[1ère partie]
Je sélectionne un projet, un destinataire, un média
sur lequel envoyer les fichiers et un émetteur.
Toutes ces informations se trouvent dans les tables.
J'ai décidé de faire une fenêtre de ce type:
 
Projet:
Destinataire:
Média:
Emetteur:
 
et qui comprend une ComboBox et 3 boutons (Précédent,
Suivant et Quitter).
Au fur et à mesure, on effectue une sélection à l'aide
de la ComboBox, puis on clique sur Suivant pour passer
à l'étape suivant, bien entendu ;)
 
Pour l'instant tout cela fonctionne, même si ce n'est pas
encore vraiment optimisé..
 
 
[2e partie]
Il faut maintenant sélectionner les fichiers que l'on
souhaite envoyer. Ceux-ci se trouvent dans un répertoire
qui dépend des choix faits précédemment.
Toutefois, il faut donner la possibilité à l'utilisateur
de pouvoir choisir des fichiers dans un autre répertoire.
 
Ici, j'ai plusieurs interrogations...
Je me suis dit que ce serait plus simple à l'aide d'un
OpenDialog, mais je n'ai pas trouvé comment faire pour
sélectionner plusieurs fichiers d'un seul coup dans
cette boîte de dialogue...
Sinon, sachant que le répertoire ne contiendra que peu de
fichiers, on pourrait aussi afficher ces différents fichiers
dans une ListBox mais là le problème est que un peu moins simple
pour aller chercher des fichiers dans d'autres répertoires...
Au fait, on ne peut pas utiliser une arborescence ??
Dans ces cas-là on pourrait facilement se déplacer dans les
répertoires et sélectionner les fichiers voulus.
 
Vous en pensez quoi ??
 
Merci.


Message édité par ndmax le 13-05-2003 à 10:15:46
Reply

Marsh Posté le 09-05-2003 à 10:21:23   

Reply

Marsh Posté le 09-05-2003 à 11:02:31    

Bon, j'ai testé avec une TOpenDialog et j'ai mis
l'option pour permettre la sélection multiple.

Reply

Marsh Posté le 09-05-2003 à 12:20:55    

Une fois que tous mes fichiers sont sélectionnés, je souhaite
en connaître uniquement le nom, sans avoir le chemin complet..
Pour l'instant, en faisant OpenDialog.Files.Strings[i] j'ai
le nom complet (chemin compris).
Je sais qu'il existait une méthode pour obtenir juste
le nom du fichier, mais je ne la trouve plus et je ne sais
pas si elle est applicable ici..

Reply

Marsh Posté le 09-05-2003 à 16:05:03    

J'aimerais savoir cette fois de quelle façon on peut
obtenir la taille d'un fichier à l'aide de son nom absolu  :??:  
 
Merci.

Reply

Marsh Posté le 09-05-2003 à 20:45:35    

Ndmax a écrit :

Une fois que tous mes fichiers sont sélectionnés, je souhaite
en connaître uniquement le nom, sans avoir le chemin complet..
Pour l'instant, en faisant OpenDialog.Files.Strings[i] j'ai
le nom complet (chemin compris).
Je sais qu'il existait une méthode pour obtenir juste
le nom du fichier, mais je ne la trouve plus et je ne sais
pas si elle est applicable ici..


 
ExtractFileName(<nom complet> );


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 11-05-2003 à 18:48:12    

nom complet ? ... nom du fichier tu veux dire

Reply

Marsh Posté le 12-05-2003 à 12:32:57    

Ok, c'est bon pour ça, merci!
Maintenant, disons que je suis à la 3e partie.
 
[3e partie]
Il faut cette fois que je compresse des fichiers
afin des les envoyer plus facilement par mail
notamment. Puis, si la taille de ces derniers
est trop grosse pour être acceptée dans un mail,
je devrais les couper en plusieurs parties
et envoyer un mail par partie bien entendu !
 
Le petit problème qui se pose ici est que je dois
lancer des commande DOS, pour zipper dans un premier temps.
Cette commande sera du style :
c:\winzip\winzipse.exe fichier param
Sur l'ancien programme, fait en dBASE IV, le
paramètre s'appelait ainsi : @standard.inp
mais là je ne sais pas trop si je vais devoir
mettre le '@' (j'en doute) ou si je devrais mettre
autre chose..
 
Et puis, le gros problème est que je ne sais pas
comment lancer cette commande..... HELP !!
antp m'avait donné un exemple sur un autre topic,
mais je crois qu'il n'est pas applicable ici..
 
Que puis-je faire ??
Merci !

Reply

Marsh Posté le 12-05-2003 à 16:20:37    

Je souhaite savoir quand un processus se termine..
Dans une boucle, je lance plusieurs fois WinzipSE mais
je ne peux pas les lancer en même temps, il faut donc
que j'attende que chacun se termine avant de reprendre ma boucle.
 
Pour cela, dans l'ancien programme, il fallait comparer
la taille du ZIP et celle de l'EXE créé et attendre que
celle de ce dernier soit supérieure.
Mais bon, je pense que c'est vraiment une mauvaise méthode.
 
Est-ce que le fichier que WinzipSE créé ne peut être
perçu par Delphi uniquement lorsque le processus est fini ??
Dans ce cas, je pense qu'il serait plus simple d'attendre
la création du fichier EXE, avant de relancer la boucle..
 
Vous en pensez quoi ??
Merci.

Reply

Marsh Posté le 12-05-2003 à 16:27:30    

J'ai vu aussi qu'il y avait une fonction Wait
(pour le MediaPlayer) mais est-ce que l'on peut
utiliser une fonction de ce style ??

Reply

Marsh Posté le 12-05-2003 à 16:47:35    

Personne ne peut m'aider ??
SVP, ça me bloque !!
 
Merci.

Reply

Marsh Posté le 12-05-2003 à 16:47:35   

Reply

Marsh Posté le 13-05-2003 à 10:19:36    

Là je bloque vraiment, je ne vois pas trop comment je peux m'en tirer..  :??:  
Il faut que j'arrive à savoir quand le processus de création du Self-Extractor se termine, afin de pouvoir en relancer un second juste après. En effet, si 2 tels processus se lancent en même temps, seul un seul sera exécuté..
 

Reply

Marsh Posté le 13-05-2003 à 11:06:07    

J'ai pensé faire un

Code :
  1. while not FileExists(fichier)


mais mon appli a l'air de boucler à fond......

Reply

Marsh Posté le 14-05-2003 à 09:43:22    

Bon, je suis parvenu à un semblant de "réussite"..
En fait, j'ajoute chaque commande que je souhaite
effectuer dans un BATCH que je lance ensuite.
 
Ainsi, il n'y a plus d'erreur comme quoi 2 instances
de WinzipSE se lancent en même temps.
 
Par contre, le seul problème est que lorsque je lance
mon BATCH, celui-ci n'est pas encore créé,
il n'apparaît que peu de temps après !!!!!!
Comment puis-je faire pour attendre la création de ce
fichier BATCH pour pouvoir le lancer ensuite ??
 
Merci.
 
PS: je crée mon BATCH ainsi

Code :
  1. echo winzipse.exe zipfile.zip > batch.bat

Reply

Marsh Posté le 14-05-2003 à 21:55:39    

J'ai eu ce probleme sous VB.
Moi la soluce que j'ai trouvé était de mettre les commandes complete dans le Batch et de lancer celui ci.  :p  
 
Ex:
rar a archive.arj nomdesfichiers
rar a archive1.arj nomdesfichiers1
etc....
 
Et là y'avait qu'une seule session RAR a la fois  ;)
 
Pour voir si ton Batch est créé, tu test avec un "If existfile"


Message édité par bbabar10 le 14-05-2003 à 22:00:54
Reply

Marsh Posté le 14-05-2003 à 23:52:35    

Oui, le BATCH c'est comme ça que j'ai fait aussi.
Mais si je fais un FileExists, il va me retourner faux obligatoirement au début, car le fichier sera réellement créé quelques secondes ensuite..
J'ai testé une boucle

Code :
  1. while not FileExists(fichier) do
  2. begin
  3. end;


mais bien entendu ça fait ramer à fond !!!!!!!
 
Je ne sais plus quoi faire..

Reply

Marsh Posté le 15-05-2003 à 01:43:18    

Ndmax a écrit :

Oui, le BATCH c'est comme ça que j'ai fait aussi.
Mais si je fais un FileExists, il va me retourner faux obligatoirement au début, car le fichier sera réellement créé quelques secondes ensuite..
J'ai testé une boucle

Code :
  1. while not FileExists(fichier) do
  2. begin
  3. end;


mais bien entendu ça fait ramer à fond !!!!!!!
 
Je ne sais plus quoi faire..


 
utilise un timer, cela évitera de bouffer toute les resources cpu

Reply

Marsh Posté le 15-05-2003 à 08:59:14    

Tu peux m'expliquer un peu l'utilisation d'un time STP ??
Je vais essayer de voir ce que je peux faire, mais
si tu peux me guider..
 
Merci.  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed