Цитата(Animex @ 28.7.2007, 00:22 ) | | Собственно сабж |
| Код | type {$REGION 'TFileAttribute, TFileAttributes'} TFileAttribute = (attrReadOnly, attrHidden, attrSystem, attrDirectory, attrArchive, attrDevice, attrNormal, attrTemporary, attrSparseFile, attrReparsePoint, attrCompressed, attrOffline, attrNotContentIndexed, attrEncrypted);
TFileAttributes = set of TFileAttribute; {$ENDREGION}
const {$REGION 'WORD ATTRIBUTES[13]'} ATTRIBUTES: array[0..13] of WORD = (FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_DIRECTORY, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_DEVICE, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_TEMPORARY, FILE_ATTRIBUTE_SPARSE_FILE, FILE_ATTRIBUTE_REPARSE_POINT, FILE_ATTRIBUTE_COMPRESSED, FILE_ATTRIBUTE_OFFLINE, FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, FILE_ATTRIBUTE_ENCRYPTED); {$ENDREGION}
function SetFileAttributes(const FileName: string; attr: TFileAttributes): Boolean; function DWORDFromTAttr(attr: TFileAttributes): DWORD; var i: DWORD; begin Result := 0; for i := 0 to High(ATTRIBUTES) do if TFileAttribute(i) in attr then Result := Result or ATTRIBUTES[i]; end; begin Result := Windows.SetFileAttributes(PChar(FileName), DWORDFromTAttr(attr)); end; |
Юзаем:| Код | SetFileAttributes(S_FILE, [attrHidden]); |
Добавлено @ 16:59 До кучи, ещё и определение атрибутов:
| Код | function GetFileAttributes(const FileName: string): TFileAttributes; function TAttrFromDWORD(dw: DWORD): TFileAttributes; var i: WORD; begin Result := []; for i := 0 to High(ATTRIBUTES) do if (dw and ATTRIBUTES[i]) = ATTRIBUTES[i] then Include(Result, TFileAttribute(i)); end; var h: DWORD; begin Result := []; h := Windows.GetFileAttributes(PChar(FileName)); if h = MAXDWORD then Exit; Result := TAttrFromDWORD(h); end; |
Не спрашивайте зачем так всё сложно  |