IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment deverrouiller un fichier afin de le supprimer ?


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut Comment deverrouiller un fichier afin de le supprimer ?
    Salut à tous,

    Petit problème, je souhaite supprimer un fichier qui est déjà ouvert dans une appli.
    Bien évidemment, si j'utilise une fonctionne classique, cette fonction me retourne une erreur car le fichier est verrouillé par l'appli.

    Mais je suis tétu, et je veux qd même supprimer ce fichier, même s'il est ouvert par une appli...
    Comment deverrouiller un tel fichier ??

    J'ai cherché, mais pas réellement trouvé de réponse, il y a des unlockfile, mais seulement utilisé après une utilisation de lockfile... donc verrouillage puis deverrouillage interne.
    La le verrouillage est fait par une appli tierce...

    Si qq'un à une idée...
    Merci d'avance

    [Merci d'éviter les majuscules dans vos titres. Penser à signaler votre version de Delphi]
    Giovanny Temgoua
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Salut,

    Sans me prétendre expert Delphi, je pense que ton problème se situe plus au niveau du système d'exploitation : Quand un fichier est "locké" par une application, généralement parce que cette application l'utilise en mode écriture, tu ne pourras pas l'effacer avec une application exterieure.

    Par contre, ce que tu peux faire, c'est effacer ce fichier au démarrage du système, ou bien scruter le fichier, et le supprimer quand il n'est plus locké par l'autre application.

    Peut-être que je dis des bêtises aussi ? Je pense dire vrai

  3. #3
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Je pense que tu as raison. La solution aussi est correcte je pense.

    Mais, j'ai besoin de l'effacer réellement sur le moment.
    Je sais qu'il existe des utilitaires permettant de déverouiller un fichier style wholockme etc... donc je pense aussi qu'il existe des solutions en sources delphi pour effectuer le même style d'action.

    Surtout que j'ai omis quelquechose de relativement important, ce fichier peut être en cours de lecture par un autre poste (le fichier à supprimer étant sur réseau)... donc le redémarrage du poste local n'est même pas une solution dans mon cas. ( le serveur de fichier n'est rien d'autre que du windows)

    merci quand même !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Wholockme ne te permet pas de dévérouiller un fichier d'après la description du logiciel.
    Il te permet uniquement de lister les processus qui ont un lock sur le fichier.

    Le problème est le suivant : un processus établi un lock sur un fichier. Le système d'exploitation, qui se charge de la gestion des fichiers, ajoute donc ce fichier à la liste des fichiers lockés. Quand un autre processus essai d'effacer ce fichier, il est bloqué car il fait partie de la liste des fichiers lockés...

    Donc en passant par "les fonctions classiques" de gestion des fichiers fournies par le système d'exploitation ( et utilisée par les fonctions delphi ) tu ne pourras pas le faire.

    La seule solution que je vois, serait de court circuiter le système d'exploitation, afin que tu puisses effacer le fichier sans passer par lui. Et je ne pense pas que ça entre dans le cadre de la programmation delphi, mais là c'est plutot de l'ordre de "l'exploitation de bug" de l'os, chose que tu ne trouveras pas je pense dans ces forums

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 25
    Par défaut
    Si un verrou est posé sur un fichier, ca sert à ce que l'appli qui l'utilise ne plante pas.
    la seule facon de passer outre est de fermer l'appli en question...
    Sinon tu risques fort de faire planter le pc qui lit ce fichier !

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    En effet, c'est une protection que le système d'exploitation fait !

    En plus, ça évite que deux processus différents viennent modifier un même fichier, rendant les données incohérentes ! Supposant qu'un ordre d'écriture sur un bloc lancé par un processus interferant avec un autre ordre d'écriture sur le même bloc lancé par un autre processus ne plante pas

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/03/2015, 16h09
  2. Réponses: 3
    Dernier message: 01/09/2012, 09h30
  3. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30
  4. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo