Attendre la fin d'un processus.. [Projet SUIVI] - Delphi/Pascal - Programmation
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.
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..
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.
Marsh Posté le 09-05-2003 à 20:45:35
Ndmax a écrit : Une fois que tous mes fichiers sont sélectionnés, je souhaite |
ExtractFileName(<nom complet> );
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 !
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.
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 ??
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é..
Marsh Posté le 13-05-2003 à 11:06:07
J'ai pensé faire un
Code :
|
mais mon appli a l'air de boucler à fond......
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 :
|
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.
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"
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 :
|
mais bien entendu ça fait ramer à fond !!!!!!!
Je ne sais plus quoi faire..
Marsh Posté le 15-05-2003 à 01:43:18
Ndmax a écrit : Oui, le BATCH c'est comme ça que j'ai fait aussi.
|
utilise un timer, cela évitera de bouffer toute les resources cpu
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.
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