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
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.