begin process at 2012 02 07 06:12:26
  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 :9 946

Auteur : Amadeus

Ecrire un message privé
Commentaire sur cette source (15)
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 Source avec une capture KINECT TEST V1 par FFCAST
Source avec Zip DÉCOUPER UNE FENÊTRE par gta126
Source avec Zip TRANSCRIRE UN FICHIER OPEN FINANCIAL EXCHANGE (OFX) EN FICHI... par jeffem
Source avec Zip Source avec une capture MSXML 4.0 VALIDATION XML / XSD par redtux
Source avec Zip FBRENOMMEADOBJET par fbalien

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RECHERCHE PAR EXTENSION AVEC JVCL par Weirdy
Source avec Zip Source avec une capture KINECT TEST V1 par FFCAST
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.

Commentaire de ELICO le 25/07/2011 21:52:43

Bonsoir,

En bon débutant...donc mauvais. j' ai pris le code directement en copier coller dans mon source et compiler l'ensemble dans "DELPHI7".

Le résultat ne c'est pas fait attendre, erreur la variable .....inconnue.

.....
    // 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;
.....
[Erreur] FRetours.pas(542): Identificateur non déclaré : 'hf'

Effectivement cette variable n'est pas déclarée et comme je ne comprend pas tout et ne trouvant aucune explication sur la fonction "LocFile" je ne sais pas à quoi correspond "hf". if LockFile(hf, 0, 0, wSize, wHsize).

peut être que hf correspond à HandleFich.

La raison à des raisons que la raison ignore, Mais l'ignorance c'est pire.

Ceci dit je suis un peu perplexe sur la difficulté rencontrée en DELPHI7 à locker et delocker un fichier partagé sur un réseau.

si, devant mon désarrois, quelqu'un ou quelle qu'une ont une méthode pour me sortir d'une ignorance aussi abyssale; je suis preneur.

Merci d'avance

 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


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 6,146 sec (3)

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