begin process at 2010 02 09 14:43:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > VERROUILER UN FICHIER

VERROUILER UN FICHIER


 Information sur la source

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :fichier, verrouiller, api, lockfile, déverrouiller Niveau :Initié Date de création :05/09/2003 Date de mise à jour :10/09/2003 18:36:31 Vu :8 042

Auteur : Amadeus

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Voici une fonction qui permet de verrouiller un fichier.
Et une procedure qui permet de déverrouiller. En utilisant des fonction de l'API    

Il est possible avec lockFile de verrouiller une partie du fichier je pense. Je regarderai plus tard pour gérer cela.

Source

  • Function LockFichier(sFich: string): hFile;
  • var
  • HandleFich: hFile;
  • // le type HFile n'est rien d'autre d'un LongWord
  • wHSize, wSize: longword;
  • ofs: TOFStruct; // on ne s'en servira pas (c'est juste pour le passer à OpenFile
  • begin
  • result:= 0;
  • if FileExists(sFich) then
  • begin
  • // on ouvre le fichier et on récupére son Handle
  • HandleFich:= OpenFile(pChar(sFich), ofs, OF_READ or OF_WRITE or OF_SHARE_EXCLUSIVE);
  • if HandleFich <> 0 then
  • begin
  • // on récupére la taille du fichier
  • wSize:= GetFileSize(HandleFich, @wHSize);
  • // on doit donné a LockFile la partie du fichier a verrouiller (c'est borne)
  • if LockFile(hf, 0, 0, wSize, wHSize) then
  • result:= HandleFich;
  • end;
  • end;
  • end;
  • Procedure UnLockFichier(HandleFich: hFile);
  • begin
  • if HandleFich <> 0 then
  • CloseHandle(HandleFich);
  • end;
Function LockFichier(sFich: string): hFile;
var
  HandleFich: hFile;
  // le type HFile n'est rien d'autre d'un LongWord
  wHSize, wSize: longword;
  ofs: TOFStruct; // on ne s'en servira pas (c'est juste pour le passer à OpenFile
begin
  result:= 0;
  if FileExists(sFich) then
  begin
    // on ouvre le fichier et on récupére son Handle
    HandleFich:= OpenFile(pChar(sFich), ofs, OF_READ or OF_WRITE or OF_SHARE_EXCLUSIVE);
    if HandleFich <> 0 then
    begin
      // on récupére la taille du fichier
      wSize:= GetFileSize(HandleFich, @wHSize);
      // on doit donné a LockFile la partie du fichier a verrouiller (c'est borne)
     if LockFile(hf, 0, 0, wSize, wHSize) then
        result:= HandleFich;
    end;
  end;
end;


Procedure UnLockFichier(HandleFich: hFile);
begin
  if HandleFich <> 0 then
    CloseHandle(HandleFich);
end;
   

 Conclusion

Voir le code original sur :
http://www.experts-exchange.com/Programming/Prog ramming_Languages/Delphi/Q_20655593.html  


 Sources du même auteur

RENVOIE UNE PARTIE D'UNE CHAINE PAR RAPPORT À UN SÉPARATEUR
DONNE NOMBRE DE TOKEN DANS UNE CHAINE
Source avec Zip COMPOSANT TALIGNPANEL
GESTION DES FENÊTRE MDI FILLE UNIQUE
Source avec Zip EXPORT DE DONNÉE D'UN DATASET DANS UN FICHIER TEXTE

 Sources de la même categorie

Source avec Zip NEXTGENS -> UNITÉS DE TYPES ÉVOLUÉS NOUVELLE GÉNÉRATION (DE... par f0xi
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip CARDS GAME SDK 1.0.0.0 par f0xi
Source avec Zip Source avec une capture TRAYICON - VOTRE ICONE DANS LA BARRE DES TACHES par Bacterius
Source avec Zip Source avec une capture WINHIDER _ CACHER UN PROGRAMME DE L'ÉCRAN ET DE LA BARRE DE ... par soldier8514

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture INTRA MESSENGER - DELPHI par keket
Source avec Zip Source avec une capture FICLOCK : LOCKEZ LES FICHIERS par JulioDelphi
Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP
Source avec Zip Source avec une capture OBJET POUR LA PROJECTION DE FICHIER EN MÉMOIRE (FILE MAPPING... par DevNul
Source avec Zip CRÉATION DE FICHIERS TEMPORAIRES DANS LE DOSSIER TEMPORAIRE ... par jihelb

Commentaires et avis

Commentaire de Delphiprog le 05/09/2003 18:29:54 administrateur CS

Cette rentrée de septembre 2003 semble être un bon cru !

A partir de ProtectFile, ne serait-il pas possible de réaliser simplement une fonction indiquant si un fichier donné est déjà verrouillé par une autre application ?
En tous cas, merci pour ce code utile.

Commentaire de japee le 08/09/2003 11:08:35 administrateur CS

C'est sympa de partager avec la communauté DelphiFr les codes trouvés sur d'autres sites.
Ca le serait encore plus si les codes ainsi copiés-collés l'étaient dans leur intégralité, ou un tant soit peu commentés.
Merci quand même !
Pour plus l'intégralité de ce code, un lien :
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20655593.html

Commentaire de japee le 08/09/2003 11:17:52 administrateur CS

Oups, mille excuses pour la faute de saisie.
Je voulais dire :
Pour plus de précisions, ou pour avoir l'intégralité de ce code :
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20655593.html
Au fait, pour rendre à César ce qui lui appartient, ce code est de :
"anAKiN
Delphi programmer from Poland"
Merci à lui :-)

Commentaire de Amadeus le 08/09/2003 11:26:40

Désolé de te decevoir mais je n'ai pas pomper le code source, j'ai monté ces deux fonctions à partir de divers renseignement glaner sur le net (fonctionnement de LockFile et OpenFile), de plus je ne vais casiment jamais sur les site anglophone étant d'un niveau extrêmement médiocre. Et lorsque je pompe du code ce qui arrive (dans notre travaille cela est monnaie courante, délai oblige) je l'indique .

Commentaire de Amadeus le 08/09/2003 13:57:34

Etant donner que le grand conseil de l'inquisition à déjà son idée sur la chose, je ne vais pas gaspiller mon temps en de veine explication. Vive le partage des connaissance !!

Commentaire de Pascail le 16/09/2003 07:01:30

Tu l'a dit toi même : "Voir le code original sur :
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20655593.html" dans ta source. Japee a juste voulu REPETER qu'il y avait plus d'infos sur le site, pour TheWhiteShadow. Donc ne monte pas sur tes grans cheveaux, et ne nous ressort pas tes idées d'inquisition, mé ui, on téme  :p

Commentaire de Amadeus le 16/09/2003 09:06:38

J'ai ajouter le lien par la suite.

Commentaire de japee le 16/09/2003 09:44:57 administrateur CS

Je présente mes excuses à Amadeus pour les allusions blessantes qui ressortent de mes deux commentaires. J'admets volontiers qu'elles n'étaient pas justifiées.
Son message récent prouve, s'il en était besoin, son honnêteté.
Il a droit à tout mon respect.
J'espère qu'il continuera longtemps à partager ses connaissances avec nous. Amen.
Bonne prog' ;-)

Commentaire de Razorus le 23/08/2004 14:19:16

pas mal ^^ c'est sur ça vérouille bien :p on pe plus acceder au fichier :p
à part une erreur :
if LockFile(hf, 0, 0, wSize, wHSize) then
hf >> HandleFich
par contre , (dsl je connais rien à delphi :p j'ai lu une dizaine de source, j'comprend petit à petit)
pkoi lorsque j'essaie "unlockfichier"
j'obtient le msg d'erreur :
[Erreur] Project1.dpr(39): Types incompatibles : 'Cardinal' et 'String'

j'utilise bien la fonction Lock , j'rajoute "un" devant et hop msg d'erreur lol

Commentaire de Amadeus le 23/08/2004 14:30:45

La procedure UnLockFichier attend en paramètre le handle du fichier vérrouillé par LockFichier. Le type hFile est un LongWord.
Alors que toi tu lui passes un string. A la procedure UnLockFichier tu n'as qu'a lui paaser ce que renvoie la fonction  LockFichie.

Commentaire de liilmra le 16/12/2004 22:54:20

tres bien éxpliqué et surtous tres simple

Commentaire de phephelavi le 17/01/2007 10:44:19

Très bien le code et ca fonctionne !

Juste une question : et pour verrouiller un dossier de Windows, avez un code similaire ? Est-ce possible ?

Merci pour votre réponse, ca m'intérresse

Phephalavi

Commentaire de raynaldos le 19/11/2007 14:44:02

Bravo pour les fichiers locker!
Mais comment libérer un dosier ?
J'ai utilisé de façon externe «unlocker» et je voie que ça fonctionne bien et je voie le chemin verrouiller dans la fenêtre
mais comment puis-je le faire avec delphi?
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.
Avec «unlocker» je réussis à enlever les locks sur le répertoire mais je ne veut pas avoir à utilisé «unlocker» quel serait le code?

Commentaire de hamza le 14/10/2008 10:54:16

Bonjour, ça marche trés bien la fonction (LockFichier), mais je sais ne sais pas comment passer le paramètres (HandleFich) a la procedure (UnLockFichier) : vous pouvez m'expliqué avec un petit exemple.

Et si possible de verrouiller le fichier en question même si l'application est fermer.

Merci.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Extraire des tags HTML [ par BinOff ] Voilà, je commence avec un fichier HTML ouvert en tant que source dans un memo1.Je souhaiterais extraire les noms des images incluses dans le source H Ouvrir un fichier .exe ou .dll sous forme hexa [ par delphi ] Comment faire pour ouvrir un fichier .exe ou .dll sous son format Hexadecimal et modifier un octet ou mot donné. lancement d'un fichier au démarrage de l'application [ par Pierre ] Comment est-il possible, en Delphi, de lancer un fichier (.txt par exemple comme je l'indique ci-après) au démarrage sans que la TForm apparaisse ? Av Verrouiller la touche windows [ par slhuilli ] Bonjour,je cherche un bout de code qui permette que quand on appuie sur la touche du clavier Windows, rien ne se passe.Merci Copie de fichier [ par Kal ] De kelle maniere puis je copier un fichier d'un repertoire a un autre parce ke j'ai chercher du cote des routines de gestion de fichier mais je trouve Les Api Windows [ par twoupy ] Est-ce que quelqu'un possède ou sait où je pourrais trouver l'aide sur les Api Windows (win32.hlp) en français. ce serait bien cool, parce que l'angl URGENT : problème d'installation de composant [ par Henri ] problème d'installationBonjour,Je vous remercie de résoudre le problème suivant :Je voudrais installer un composant téléchargé sans son fichier *.pas documentation API [ par Noureddine ] Bonjour,je cherche la documentation pour comprendre L'API, si vous avez une adresse ou je peut télécharger une documentation en français SVPMerci. Comment on fait pour ouvrir un fichier .EXE tout en ouvrant le programme et ensuite pour le sauvegarder ? [ par Zangdar ] cf : voir titre.www.zangdar.fr.st Comment envoyer un fichier DBISAM par mail via un bouton ? [ par Zangdar ] cf : voir titre


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,718 sec (4)

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