Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как программно выставить атрибут "скрытый"


Автор: Animex 27.7.2007, 23:22
Собственно сабж

Автор: ALeXandrK 27.7.2007, 23:26
Атрибут чего и что значит скрытый?

Автор: Alexeis 27.7.2007, 23:37
Как ни странно функцией SetFileAttributes()  smile 

Автор: ALeXandrK 27.7.2007, 23:49
Это про файлы что ли...  smile  так написал бы хоть слово про файлы...
Если не поможет  SetFileAttributes(), то хоть в справку залезь smile 
Уж про файлы то много где всего расказано.

Автор: Yanis 28.7.2007, 16:58
Цитата(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;


Не спрашивайте зачем так всё сложно smile

Автор: Telepyz 13.8.2007, 12:11
Цитата(Yanis @  28.7.2007,  17:58 Найти цитируемый пост)
{$REGION 'TFileAttribute, TFileAttributes'}

REGION - что это, у меня делфи на него ругается говорит что не знает такого...

Автор: Yanis 13.8.2007, 13:15
Цитата(Telepyz @  13.8.2007,  13:11 Найти цитируемый пост)
REGION - что это, у меня делфи на него ругается говорит что не знает такого... 

Эти строки можно безболезненно удалить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)