Problème avec DeleteFile [Résolu]

Utilisateur anonyme - 1 mai 2006 à 11:07 - Dernière réponse : Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention
- 2 mai 2006 à 17:22
Salut à tous

J'utilise les composant Abbrevia pour décompresser un zip :

Procedure TForm1.Dezzip;
begin
AbUnZipper1.FileName:=Chemin+'fichier.zip';
CreateDir(Chemin+'fichier');
AbUnZipper1.BaseDirectory:=Chemin+'fichier';
AbUnZipper1.ExtractFiles('*.*');
end;

Tout se passe bien. Mais quand je fais DeleteFile(Chemin+'fichier.zip'); bien le fichier ne se delete pas. Il semble etre encore utilisé par mon application. La je bloque car je ne sais pas comment faire.

A++ et merci
Afficher la suite 

13 réponses

Répondre au sujet
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 1 mai 2006 à 17:35
+3
Utile
une fois les fichiers dézippé, assure toi que le fichier zip soit refermé et libéré de toute utilisation.

je pense que le composant que tu utilise ne ferme le fichier qu'a la liberation ou chargement d'un autre fichier ce qui fait que comme le fichier est encore ouvert, DeleteFile ou meme Erase ne peuvent pas le supprimer.

etonnant meme que tu n'est pas l'injure windows "ne peu supprimer le fichier car ce fichier est utiliser par un autre processus"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 1 mai 2006 à 18:05
+3
Utile
Salut,

tu peux essayer ça (attention pas testé donc je peux m'être planté) :

Procedure TForm1.Dezzip;
begin
 try
   AbUnZipper1.FileName:= Chemin+'fichier.zip';
   CreateDir(Chemin+'fichier');
   AbUnZipper1.BaseDirectory:=Chemin+'fichier';
   AbUnZipper1.ExtractFiles('*.*');
 finally AbUnZipper1.free;
end;

<hr size ="2" width="100%">La paresse est la mère du génie...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Matt 261
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 1 mai 2006 à 19:28
+3
Utile
Dans le code donné par matt261, je trouve gênant qu'on libère AbUnZipper1 alors qu'il est alloué ailleurs apparemment.
Au prochain appel de la méthode Dezzip, ça craint...

May Delphi be with you !
<hr color="#008000">
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Delphiprog
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 1 mai 2006 à 11:49
0
Utile
Ta variable "chemin" contient-elle le séparateur "" à la fin ?

May Delphi be with you !
<hr color="#008000">
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Utilisateur anonyme - 1 mai 2006 à 11:59
0
Utile
Salut Delphiprog


Oui  ma variable "chemin" contient  "". J'y avais pensé :
chemin:=ExtractFilePath(Paramstr(0)); Normalement avec cette fonction
j'ai bien "" a la fin il me semble.


A+ et merci
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 1 mai 2006 à 17:46
0
Utile
Re,


Je pense que le fichier n'est pas fermé en effet. Il me reste plus qu'à
le killer alors. C'est bizarre  c'est vrai que Windows ne le dise
pas.


A+ et merci
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 1 mai 2006 à 18:30
0
Utile
Ah merci Matt, j'avais testé plusieurs tucs mais Free. Grrrr j'y ai passé la journée mdrrr.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 1 mai 2006 à 18:32
0
Utile
Ca marche nickel : j'ai les boules Mdrrrrr.
Commenter la réponse de Utilisateur anonyme
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 1 mai 2006 à 19:19
0
Utile
C'était avec grand plaisir...

<hr size="2" width="100%">La paresse est la mère du génie...
Commenter la réponse de Matt 261
Utilisateur anonyme - 1 mai 2006 à 19:48
0
Utile
C'est vrai Philippe ca craint mais malheureusement je n'ai pas trouvé
d'autre alternative. Mais je vais me pencher sur le probleme
Commenter la réponse de Utilisateur anonyme
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 2 mai 2006 à 10:00
0
Utile
Oui moi aussi je me suis posé des questions quand j'ai donné le bout de code si par le plus grand des hasard on devait réappeller AbUnZipper1. Logiquement, il doit se produire une grosse erreur mais tout dépend de comment ton prog est fait. Je m'explique, si c'est une fenêtre qui s'ouvre, qui décompresse et qui se ferme alors là y'a pas de problèmes... MAIS si c'est une fenêtre qui s'ouvre et avec laquelle tu peux décompresser plusieurs fichiers alors là il faut recréer le composant au début de ta procédure pour le détruire à la fin...
J'espère avoir été clair sinon dites le moi...

<hr size="2" width="100%">La paresse est la mère du génie...
Commenter la réponse de Matt 261
Utilisateur anonyme - 2 mai 2006 à 11:35
0
Utile
Re,

En fait j'ai un dossier que j'ai zippé et mis en ressources. Donc je le récupère sur le HDD et je le dezippe. Finalement j'efface le fichier zipper du HDD.

Il y a tjs la possibilité des try excpet finally en cas de beug. Cela evitera le beug mais le probleme ne sera pas résolu : en cas de réouverture. Ca me gène qu'apres le dezippage  le AbUnzipper ne soit pas "libéré" automatiquement : est ce un oublie de la part du développeur ?


Ca va m'en faire du travail : finir mon appli, voir ce probleme, et faire un compo pour le Shell de Windows. Lol je suis pas pres d'avoir finit.


 


A+ et merci à tous


 


 


 
Commenter la réponse de Utilisateur anonyme
Matt 261 1201 Messages postés mercredi 2 novembre 2005Date d'inscription 10 septembre 2011 Dernière intervention - 2 mai 2006 à 17:22
0
Utile
AAAAAAh les joies du développement... et de toutes les taches qu'on voit qui s'accumulent... lol

<hr size="2" width="100%">La paresse est la mère du génie...
Commenter la réponse de Matt 261

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.