begin process at 2010 03 19 14:54:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Chemin verrouiller


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Chemin verrouiller

lundi 19 novembre 2007 à 15:13:29 | Chemin verrouiller

raynaldos

Voici l'Explication!
La situation est la suivante; j'ai un petit programme qui a besoin de détruire des tables dans un répertoire puis le répertoire par la suite je réussis à détruire les tables mais quand je viens pour détruire le répertoire il me dit qu'il est utilisé par une personne ou un programme.
J'ai pris soin de ne avoir ce répertoire comme répertoire courant «Setcurrentdir= c:\» et non mon répertoire que je veut détruire.
J'ai utilisé de façon externe «unlocker» et je voie que ça fonctionne bien, je voie le chemin verrouiller dans la fenêtre et je peut «débloqué» au besoin le répertoire.
Mais comment puis-je le faire avec delphi?

Avec «unlocker» je réussis à enlever les locks sur le répertoire mais je ne veut pas avoir à utilisé «unlocker» quel serait le code?

Piste: c'est une question de «PID» et processus.
lundi 19 novembre 2007 à 15:23:48 | Re : Chemin verrouiller

Loda

Membre Club
http://www.delphifr.com/reglement.aspx
-->
http://www.delphifr.com/infomsg_DOSSIER-LOCKER_1036521.aspx#2


Loda

PS:
"Piste: c'est une question de «PID» et processus. " j'en conclus que tu ne sais pas ce qu'est un PID. Vu que tu nous fait partiquement un pléonasme....


Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
lundi 19 novembre 2007 à 16:14:46 | Re : Chemin verrouiller

raynaldos

Je ne suis pas habitué avec ce site et les façons de faire
Je m'en excuse !

«C'est surement que tu n'as pas fermé un des fichiers qui est dedans»
Les tables ont tous été détruite dans ce répertoire donc il ne reste plus
aucun fichier.

À cette étape il ne me reste qu'a détruire le répertoire mais voilà qu'il
m'est impossible de le détruire.

Message;
Impossible de supprimer z2 : Cette ressource est utilisée par une autre personne ou un autre programme. Fermez les programmes susceptibles d'utiliser le fichier.....


J'ai utilisé les functions les plus commune mais ça ne fonctionne pas donc je me suis mis à douté que le répertoire était locker par mon programme étant donné que j'avais détruit des fichiers. Quand j'utilise le programme «Unlocker.exe» il m'indique que le répertoire est bloqué voici
la ligne;

Processus          Chemin verrouillé    PID   Chemin processus
GESTIONNAIRE.EXE   C:\GDATA\PROJET\Z2   3676  C:\LE GESTIONNAIRE.EXE

Les options de «Unlocker.exe» sont;
«Fermer le processus» «Débloquer» «Tout débloquer»

Si je clique sur «Débloquer» mon répertoire est revenus libre et je peut le détruire.

Quand je dit que je ne peut pas le détruire c'est dans l'explorateur de windows que j'essaie de le détruire et non par mon programme car je me dit
que c'est inutile d'essayé de le détruire par programation si je ne suis même
pas capable de le détruire directement mais quand je clique sur «Débloquer» dans «Unlocker.exe» et que j'essais de le détruire à nouveau là ça marche !

Alors ?
mardi 20 novembre 2007 à 09:33:41 | Re : Chemin verrouiller

Francky23012301

Membre Club
raynaldos : Pas l'habitude. Ouep mais il y a le règlement et tu as du le lire .

Pour reprendre la remarque de Loda : Sans code on ne peut pas savoir.

Si tu ne peux pas supprimer ton répertoire c'est qu'un de tes fichiers est utisé. Donc ton code de suppression doit avoir un ptit problème : mais sans code on ne peut pas te dire.
mardi 20 novembre 2007 à 14:03:24 | Re : Chemin verrouiller

raynaldos

Je n'avait pas l'habitude d'utiliser votre fenêtre pour demandé de
l'aide mais je comprend par vos propos que je ne suis pas le bien venus.

Milles excuse pour avoir dérangé votre routine.

Mais voilà la réponse à mes questions j'ai trouvé q'étant donné que les
tables que je détruit sont des tables paradox c'est la session qui lock le répertoire je doit donc après avoir détruit mes tables fermer la session par «session.close» détruire mon répertoire et réouvrir ma session avec «session.open» mais en débug ça ne marche pas car c'est «delphi» qui lock le répertoire il faut écrire le code et lancer l'exécutable et là ça marche.

J'espère avoir contribué à votre éveille !
mardi 20 novembre 2007 à 15:03:50 | Re : Chemin verrouiller

Loda

Membre Club
re,

je voudrais juste clarifier un-deux points:

"votre fenêtre pour demandé de l'aide"
cela s'appel un forum, c'est un concept très répondu sur internet. renseignes-toi.

"je comprend par vos propos que je ne suis pas le bien venus"
Il en est tout autremenet, désolé de l'incompréhension.
Le problème est qu'on aime pas bcp de se répeter ou parler dans le vide. Relit le premier thread et tu comprendra ce que j'entend par là. 
Tu vois, l'idée c'est qu'on pas très envie de perdre du temps à expliquer, si l'autre personne ne veux pas prendre du temps pour lire, appliquer et répondre (dans un français compréhensible et avec ponctuaction).
Ceci implique, qu'après un certain temps, on a tendance à devenir plus sec.

Si tu rencontre d'autres problèmes et que tu viens avec une question bien faite, tu recevra une réponse à ta question. Le problème vient de comment tu pose ta question et comment tu traite les réponses fournies.

je te re-recommande de lire cette article:
http://www.gnurou.org/writing/smartquestionsfr

"session.close"
donc tu n'avais pas bien fermé tes tables....  prend 5min pour relit le premier thread.

bonne continuation,

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
mardi 20 novembre 2007 à 15:20:33 | Re : Chemin verrouiller

raynaldos

Merci Loda !

J'ai lu l'article et je te comprend !

La seul façon que je connaît pour fermer les tables est
«table.close» ou «table.active := false;»

En existe-il d'autre?
mardi 20 novembre 2007 à 19:12:07 | Re : Chemin verrouiller

khawarizm

Membre Club

Bonjour tout le monde ;  si j'ai bien compris tu cherche à détruire un répertoire qui contient des tables mais, en même temps ces tables sont utilisées par ton application, se qui veut dire que ton appli  est reliée à ces tables via un répertoire ou via un alias qui pointe sur ce répertoire, se qui implique que ton appli est reliée à ce répertoire !!!! Alors.le bon sens nous dit que pour supprimer le répertoire il faut d'abord désactiver ce lien. ( sinon ,c'est comme si tu veux démonter une roue de voiture qui roule à 200 Km/h) . Cordialement.

Ps : je profite de cette occasion pour souhaiter bon retour à Franckybash.gifbash.gifbash.gif
mardi 20 novembre 2007 à 22:00:00 | Re : Chemin verrouiller

Francky23012301

Membre Club
Salut,

Deux questions

1) Avant de supprimer ton répertoire prend tu la peine de vérifier que ta table est bien fermée ?

MaTable.close;
If not MaTable.Active Then
//Procedure pour supprimer fichiers et répertoire ?.

 2)Est tu sur que c'est la suppression du répertoire qui pose problème ou plutot un fichier qui n'est pas supprimé car utilisé ? Ton erreur pointerait elle pas son nez suite à un DeleteFile ? Car normalement si un répertoire est vide il y a pas de raison qu'on ne puisse pas le supprimer (Penser à vérifier l'absence de fichiers cachés aussi).

Si ta table met du temps à se fermer ca peut poser problème. Dans ce cas tu peux faire un truc du style :

While MaTable.Active Do
Application.ProcessMessages
If not MaTable.Active Then
//Procedure pour supprimer fichiers et répertoire ?.

Le problème c'est que tu n'as posté aucun bout de code et pour savoir ce qui occupe ta table .... ben on peut pas dire comme ca .


mardi 20 novembre 2007 à 22:24:07 | Re : Chemin verrouiller

raynaldos

Merci Francky!
Mais ma table est bien fermé car si elle n'est pas fermé je ne peut pas
la supprimé.

Voici un test !

1)Crée un nouveau projet delphi
2)Place sur ta feuille;
   un TTable
   et un TButton
3)Crée un nouveau répertoire exemple c:\A
4)Dans ce répertoire place une table paradox exemple; table.db et table.px
5)Relie la table à l'objet TTable.
6)Maintenant dans l'évènement click du bouton écrit le code
suivant;
     //Ici j'ouvre la table car dans la vrai vie elle sera ouverte
     //et fermé.
     Table1.open;
     Table1.close;

     //Ici je détruit les deux fichiers
     deleteFile('C:\A\MaTable.db') ;
     deleteFile('C:\A\MaTable.px') ;

     //ou
     Table1.deleteTable;
    
     //Ici la table est supprimé.

     //Maintenant je détruit le répertoire
     removedir('c:\A');

     //Mais le répertoire ne sera pas supprimé

Maintenant écrit ce code
     Table1.DeleteTable ;
     session.close ;
     removedir('c:\aa');
     session.open;

     //Le répertoire ne sera pas supprimé car tu est en débug en création.

    //Mais enregistre ton application.
    //Ferme delphi
    //Et exécute ton application et ça va fonctionné

Et voilà les joies de la programmation !

Si vous trouvé une façon de faire autre que session.close et session.open et que je peut vérifié quand je suis en création avec delphi j'aimerai vraiement le savoir

Merci beaucoup !





Cette discussion est classée dans : répertoire, utilisé, chemin, verrouiller, détruire


Répondre à ce message

Sujets en rapport avec ce message

Répertoire dans lequel est situé le programme [ par Pingouin57 ] Salut à tous,Comme l'indique le titre, je cherche à obtenir le chemin complet du répertoire dans lequel se trouve le programme Delphi. Au final, ce se Comment savoir si un Node XML existe [ par fjohnny ] Bonjour,Voilà sur ma version de delphi (7) le composant TXMLDocument n'existe pas. N'ayant rien touvé sur le net, je suis en train de développer un co chemin avec espace [ par yvessimon ] Bonjour,Un fichier peut être référencé par sont chamin avec des espaces (ex: c:\le chemin du fichir\mon fichier est fichiet.txt )Avec fileexists ()  l Interdire la navigation dans TOpendialog [ par furax13 ] bonjour,j'aimerais ne pas autoriser aux utilisateurs de changer de répertoire lorsqu'ils sélectionnent un Topendialog. Cette boite de dialogue est pré Utilisation d'un dbgrid [ par frbos ] Bonjour, voila mon probleme.J'utilise un DBGrid connecté a une table SqlServer.Cette table a, entre autre, 2 champs :nom : un nom de fichier (non vide Recherche d'un dossier sur le disque [ par PHIL63 ] Bonjour à tous,Après avoir effectué bien des recherches sur le site, je n'ai pas trouvé de solution à mon petit souci...J'ai besoin de retrouver le ch Sauvegarde & chemin de dossier avec un OD [ par bidulchouette ] Bonjour a tous, je rencontre quelques problèmes avec une application que je tente de mettre au point. Je m'explique, j'ai 2 soucis principaux :- Je n' transfert de fichier/répertoire par le réseau [ par aforpien ] Bonjour à tous,Je travail actuellement sur un prog qui permetterai la sauvegarde automatique d'un poste ainsi que l'envoi des données vers un serveur. Renommer une série de fichiers [ par cincap ] Bonsoir,J'ai un petit souci avec une procédure pour renommer une série de fichiers.Si les fichiers en questions ont déjà été renommé avec le nouveau n composant TDirectoryListBox [ par cincap ] Bonjour à tous,Dans une procédure d'installation d'un projet avec le logiciel "InnoSetup", je crée un dossier avec mon application et un répertoire in


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales