// Dosya Niteliklerini Kolayca öğrenebileceğiniz ve
// değiştirebileceğiniz iki basit fonksiyon.
// 1.Fonksiyon GetAtt (Dosya niteliklerini öğrenmek için)
// Kullanımı
// Örn. 'C:\Dosya.txt' dosyasının ReadOnly, System ve Achive özellikleri
// olsun ama Hidden olmasın. Bu durumda
// GetAtt('C:\Dosya.txt'); nin döndüreceği değer '+R-H+S+A' olacaktır.
//
//
// 2.Fonksiyon SetAtt (Dosya Niteliklerini Değiştirmek için)
// Örn. 'C:\Dosya.doc' dosyası ReadOnly yapmak istiyelim.
// SetAtt('C:\Dosya.doc','+R');
// Örn. 'C:\Dosya.doc' dosyası ReadOnly kalksın. System ve Gizli olsun
// SetAtt('C:\Dosya.doc','-R+H+S');
// Harflerin sırası ve büyüklüğü önemli değil. Aynı işi
// SetAtt('C:\Dosya.doc','+S-r+h'); ile de yapabiliriz.
// SetAtt Fonksiyonu geriye integer bir değer döndürüyor. Eğer
// dosya nitelikleri vermede bir sorun yoksa bu değer sıfırdır.
// Dosya nitelikleri vermede bir sorun varsa değer hata kodudur.
//
// Fonksiyonların Kodunu aşağıda bulabilirsiniz.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetAtt(Filename:String):String;
var
Att0:Word;
begin
Result:='';
Att0:=FileGetAttr(FileName);
If (Att0 and faReadOnly)=faReadOnly then Result:= Result+'+R' else Result:=Result+'-R';
If (Att0 and faHidden)=faHidden then Result:= Result+'+H' else Result:=Result+'-H';
If (Att0 and faSysFile)=faSysFile then Result:= Result+'+S' else Result:=Result+'-S';
If (Att0 and faArchive)=faArchive then Result:= Result+'+A' else Result:=Result+'-A';
end;
function SetAtt(Filename:String;Att:String):Integer;
var
Att0,Att1:Word;
begin
Att0:=FileGetAttr(FileName);
Att1:=Att0;
If (Pos('+R',Att)>0) or (Pos('+r',Att)>0) then Att1 := Att1 or faReadOnly;
If (Pos('+H',Att)>0) or (Pos('+h',Att)>0) then Att1 := Att1 or faHidden;
If (Pos('+S',Att)>0) or (Pos('+s',Att)>0) then Att1 := Att1 or faSysFile;
If (Pos('+A',Att)>0) or (Pos('+a',Att)>0) then Att1 := Att1 or faArchive;
If (Pos('-R',Att)>0) or (Pos('-r',Att)>0) then Att1 := Att1 and not faReadOnly;
If (Pos('-H',Att)>0) or (Pos('-h',Att)>0) then Att1 := Att1 and not faHidden;
If (Pos('-S',Att)>0) or (Pos('-s',Att)>0) then Att1 := Att1 and not faSysFile;
If (Pos('-A',Att)>0) or (Pos('-a',Att)>0) then Att1 := Att1 and not faArchive;
Result:=FileSetAttr(FileName,Att1);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetAtt('C:\Dosya.txt','-R-S-H');
end;
// Kolay Gelsin Türker Özdemir