[Back to FILES SWAG index] [Back to Main SWAG index] [Original]

    {> How does one go about changing a File attribute
    > from hidden to unhidden using SetFAttr ?

    Try these two Procedures on For size:
    }
    GetFAttr(FName:String;Var RdOnly,Hid,Sys,Arch:Boolean);
    Var R:Registers;
    begin
      FillChar(R,Sizeof(R),0);
      FName := FName+#0; { set up as a null-terminated String For Dos }
      With R Do begin
        AH := $43;
        DS := Seg(FName); DX := ofs(FName)+1; { skip pascal length Byte }
        MsDos(R);
        RdOnly := (CL and $01) > 0;
        Hid := (CL and $02) > 0;
        Sys := (CL and $04) > 0;
        Arch := (CL and $20) > 0;
        end; { With }
    end; { GetFAttr }

    PutFAttr(FName:String;RdOnly,Hid,Sys,Arch:Boolean);
    Var R:Registers;
    begin
      FillChar(R,Sizeof(R),0);
      FName := FName+#0; { set up as a null-terminated String For Dos }
      With R Do begin
        AH := $43; AL := 1;
        DS := Seg(FName); DX := ofs(FName)+1; { skip pascal length Byte }
        if RdOnly then CL := CL or $01;
        if Hid then CL := CL or $02;
        if Sys then CL := CL or $04;
        if Arch then CL := CL or $20;
        MsDos(R);
        end; { With }
    end; { PutFAttr }

    {The File FName does not have to be opened For this to work.  In fact, it
    would probably be better if it were not.
    }

[Back to FILES SWAG index] [Back to Main SWAG index] [Original]