ObjectPascal
FileSetAttr
Function
Sets the attributes of a file SysUtils unit
 function FileSetAttr ( const FileName : string; Attributes : Integer; ) : Integer;
Description
The FileSetAttr function sets the attributes of the specified FileName.
 
The Attributes integer must be set to a combination of none, some or all of the following independent bit settings :
 
faReadOnly  : 1 : Read-only files
faHidden  : 2 : Hidden files
faSysFile  : 4 : System files
faVolumeID  : 8 : Volume ID files
faDirectory  : 16 : Directory files
faArchive  : 32 : Archive files
faSymLink  : 64 : Symbolic link

 
The returned Integer value is zero if the set was successful, otherwise it contains an error code.
Notes
This function is Operating System dependent. For example, Archive means nothing on Linux.

Important : During testing, the author always received a non-zero return code, even though the appropriate bits were set OK.
Related commands
FileGetAttr Gets the attributes of a file
FileAge Get the last modified date/time of a file without opening it
FileSetDate Set the last modified date and time of a file
FileExists Returns true if the given file exists
 
Example code : Create a text file, make is read only and hidden and display its attributes
var
  fileName : string;
  myFile   : TextFile;

  attrs    : Integer;

begin
  // Try to open a text file for writing to
  fileName := 'ATestFile.txt';
  AssignFile(myFile, fileName);
  ReWrite(myFile);

  // Write to the file
  Write(myFile, 'Hello World');

  // Close the file
  CloseFile(myFile);

  // Make the file read only and system
  if FileSetAttr(fileName, faReadOnly or faSysFile) > 0
  then WriteLn('File made into a read only system file')
  else WriteLn('File attribute change failed');

  // Get the file attributes
  attrs := FileGetAttr(fileName);

  // Display these attributes
  if attrs and faReadOnly > 0
  then WriteLn('File is read only')
  else WriteLn('File is not read only');

  if attrs and faHidden > 0
  then WriteLn('File is hidden')
  else WriteLn('File is not hidden');

  if attrs and faSysFile > 0
  then WriteLn('File is a system file')
  else WriteLn('File is not a system file');

  if attrs and faVolumeID > 0
  then WriteLn('File is a volume ID')
  else WriteLn('File is not a volume ID');

  if attrs and faDirectory > 0
  then WriteLn('File is a directory')
  else WriteLn('File is not a directory');

  if attrs and faArchive > 0
  then WriteLn('File is archived')
  else WriteLn('File is not archived');

  if attrs and faSymLink > 0
  then WriteLn('File is a symbolic link')
  else WriteLn('File is not a symbolic link');
end;
Show full unit code
   File made into a read only system file
   File is read only
   File is not hidden
   File is a system file
   File is not a Volume ID
   File is not a directory
   File is not archived
   File is not a symbolic link