Sets the file attributes of a specified file.
function FileSetAttr(const FileName: string; Attr: Integer): Integer; platform;
int FileSetAttr(const AnsiString FileName, int Attr);
SysUtils
FileSetAttr sets the file attributes of the file given by FileName to the value given by Attr. The value of Attr is formed by combining the appropriate file attribute constants, as in the following:
FileSetAttr('MyFile.sys', faReadOnly or faSysFile); // Delphi
FileSetAttr("MyFile.sys", faReadOnly | faSysFile); // C++
FileSetAttr returns zero if the function was successful. Otherwise the return value is an error code.
C++ Examples:
/* The following code reads a file's attributes into a set variable, sets the check boxes in a file-attribute dialog box to represent the current attributes, then executes the dialog box. If the user changes and accepts any dialog box settings, the code sets the file attributes to match the changed settings: */ #include "fattrdlg.h" void __fastcall TForm1::FileListMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { unsigned short Attributes; unsigned short NewAttributes; FileAttrDlg->FileDirName->Caption = FileList->Items->Strings[FileList->ItemIndex]; FileAttrDlg->FilePathName->Caption = FileList->Directory; FileAttrDlg->ChangeDate->Caption = DateTimeToStr(FileDateToDateTime(FileAge(FileList->FileName))); Attributes = FileGetAttr(FileList->Items->Strings[FileList->ItemIndex]); FileAttrDlg->ReadOnly->Checked = Attributes & faReadOnly; FileAttrDlg->Archive->Checked = Attributes & faArchive; FileAttrDlg->System->Checked = Attributes & faSysFile; FileAttrDlg->Hidden->Checked = Attributes & faHidden; if (FileAttrDlg->ShowModal()!= mrCancel){ NewAttributes = Attributes; if (FileAttrDlg->ReadOnly->Checked) NewAttributes = NewAttributes | faReadOnly; else NewAttributes = NewAttributes & ~faReadOnly; if (FileAttrDlg->Archive->Checked) NewAttributes = NewAttributes | faArchive; else NewAttributes = NewAttributes & ~faArchive; if (FileAttrDlg->System->Checked) NewAttributes = NewAttributes | faSysFile; else NewAttributes = NewAttributes & ~faSysFile; if (FileAttrDlg->Hidden->Checked) NewAttributes = NewAttributes | faHidden; else NewAttributes = NewAttributes & ~faHidden; if (NewAttributes != Attributes) FileSetAttr(FileAttrDlg->FileDirName->Caption, NewAttributes); } }
Delphi Examples:
{ The following code reads a file's attributes into a set variable, sets the check boxes in a file-attribute dialog box to represent the current attributes, then executes the dialog box. If the user changes and accepts any dialog box settings, the code sets the file attributes to match the changed settings: } procedure TForm1.FileListMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Attributes, NewAttributes: Word; begin with FileAttrForm do begin FileDirName.Caption := FileList.Items[FileList.ItemIndex]; { set box caption } FilePathName.Caption := FileList.Directory; { show directory name } ChangeDate.Caption := DateTimeToStr(FileDateToDateTime(FileAge(FileList.FileName))); Attributes := SysUtils.FileGetAttr(FileDirName.Caption); { read file attributes } ReadOnly.Checked := (Attributes and SysUtils.faReadOnly) = faReadOnly; Archive.Checked := (Attributes and faArchive) = faArchive; System.Checked := (Attributes and faSysFile) = faSysFile; Hidden.Checked := (Attributes and faHidden) = faHidden; if ShowModal <> id_Cancel then { execute dialog box } begin NewAttributes := Attributes; { start with original attributes } if ReadOnly.Checked then NewAttributes := NewAttributes or SysUtils.faReadOnly else NewAttributes := NewAttributes and not SysUtils.faReadOnly; if Archive.Checked then NewAttributes := NewAttributes or faArchive else NewAttributes := NewAttributes and not faArchive; if System.Checked then NewAttributes := NewAttributes or faSysFile else NewAttributes := NewAttributes and not faSysFile; if Hidden.Checked then NewAttributes := NewAttributes or faHidden else NewAttributes := NewAttributes and not faHidden; if NewAttributes <> Attributes then { if anything changed... } FileSetAttr(FileDirName.Caption, NewAttributes); { ...write the new values } end; end; end;
Copyright(C) 2008 CodeGear(TM). All Rights Reserved.
|
What do you think about this topic? Send feedback!
|