PDA

View Full Version : چگونه فایلها را از delete,open,move,edit محافضت کنیم ؟



persianboy
شنبه 14 شهریور 1383, 07:01 صبح
خیلی ها بنا به دلایل مختلف :wink: نمی خوان کسی فایل ها شونو ببینه .
یا اونا رو delete کنه یا move کنه یا rename کنه یا ... یعنی میخوان فایل هاشون
no access بشه . خوب چطوری ؟

persianboy
شنبه 14 شهریور 1383, 07:19 صبح
در var اصلی برنامه می نویسیم :

var protectedfile:hfile;
حال کافیست از function زیر استفاده کنیم :

function ProtectFile(sFilename : string) : hFile;
var
hf: hFile;
lwHFileSize, lwFilesize: longword;
ofs : TOFStruct;
begin
if FileExists(sFilename) then
begin
hf := OpenFile(pchar(sFilename), ofs, OF_READ or OF_WRITE or OF_SHARE_EXCLUSIVE);
if hf <> 0 then
begin
lwFilesize := GetFileSize(hf, @lwHFileSize);
if LockFile(hf, 0, 0, lwFilesize, lwHFilesize) then
Result := hf else Result := 0;
end
else Result := 0;
end
else Result := 0;
end;

function UnProtectFile(hf: hFile): boolean;
begin
if hf <> 0 then
CloseHandle(hf);
end;
یک مثال :
procedure TForm1.Button1Click(Sender: TObject);
begin
protectedFile := ProtectFile(ExtractFilePath(Application.Exename)+' test.txt');
if protectedFile = 0 then
MessageBox(Handle, 'Error locking file!', '', MB_OK or MB_ICONERROR) else
Button1.Enabled := False;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
plik: TextFile;
data: string;
begin
UnProtectFile(protectedFile);

AssignFile(plik, 'test.txt');
Reset(plik);
Read(plik, data);
CloseFile(plik);

protectedFile := ProtectFile(ExtractFilePath(Application.Exename)+' test.txt');
ShowMessage(data);
end;

MSK
شنبه 14 شهریور 1383, 11:36 صبح
:flower:

Yazdan2
یک شنبه 15 شهریور 1383, 18:13 عصر
Unprotect مشکل داره...

persianboy
دوشنبه 16 شهریور 1383, 02:00 صبح
من از همگی عذر می خوام می خواستم بیام درستش کنم امشب که دوست
خوبم یادآوری کردند . ممنون :
فقط کافیه توی var اصلی برنامه این خط رو اضافه کنید :
var protectedfile:hfile;
و توی button.click ها لازم به تعریف protectedfile نیست .
البته من function اصلی رو که قبلا اشتباه بود رو درست کردم و می تونید
از اون استفاده کنید .
ممنون که اشکالم رو گوشزد کردید .