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 / Exemple :
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/Programming_Languages/Delphi/Q_20655593.html
25 juil. 2011 à 21:52
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
14 oct. 2008 à 10:54
Et si possible de verrouiller le fichier en question même si l'application est fermer.
Merci.
19 nov. 2007 à 14:44
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?
17 janv. 2007 à 10:44
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
16 déc. 2004 à 22:54
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.