Mega Code Archive

 
Categories / Delphi / Files
 

Dosya nitelikleri [ file attributes ]

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