Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.01.2009, 13:01
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию атрибуты файла...

устанавливаю файлу атрибут "только для чтения":

Код:
FileSetAttr(file, faReadOnly);

всё прекрасно получилось..

но проблема в снятии именно этого атрибута..

как его снять?
Ответить с цитированием
  #2  
Старый 19.01.2009, 13:06
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

да, самое важное забыл...

при установке:

Код:
FileSetAttr(file, not faReadOnly)

файл исчезает (удаляется наверное)

почему?

p.s. он не удаляется, он опять появляется когда его из скрытого возвращают... странно очень...

Последний раз редактировалось ApplicatiOn, 19.01.2009 в 13:26.
Ответить с цитированием
  #3  
Старый 19.01.2009, 13:55
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

Помойму он просто становится системным. (ну типа скрытый только еще круче ) )
Так что удаляй файлы.

так снять атрибут только для чтения
Код:
FileSetReadOnly('путь', false);
Ответить с цитированием
  #4  
Старый 19.01.2009, 14:27
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

а как для скрытого файла?

FileSetHidden ругается
Ответить с цитированием
  #5  
Старый 19.01.2009, 16:45
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

ну так никто не знает?
Ответить с цитированием
  #6  
Старый 19.01.2009, 16:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Возми функцию API и сделай сам. Если не ошибаюсь, то тебе нужны GetFileAttr и SetFileAttr. Там все просто.
Ответить с цитированием
  #7  
Старый 19.01.2009, 18:07
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

ничего сложного. Сейчас быстренько написал. Сделал по аналогии с функцией FileSetReadOnly.

Код:
function FileSetHidden(const FileName: string; hid: Boolean): Boolean;
var Flags: Integer;
begin
  Result := False;
  Flags := GetFileAttributes(PChar(FileName));
  if hid then
    Flags := Flags or faHidden
  else
    Flags := Flags and not faHidden;

  Result := SetFileAttributes(PChar(FileName), Flags);
end;

Последний раз редактировалось :S.p.a.m., 19.01.2009 в 18:12.
Ответить с цитированием
  #8  
Старый 19.01.2009, 19:27
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

дада, файлы только пропадают внекуда когда я делаю "системный" и "архивный". А когда делаю скрытый он помечается некой маленькой "черной меткой" (если присмотреться то это часы (видимо временный файл))...

не совсем ясно...

p.s. кстати зачем мутить

Код:
function FileSetHidden(const FileName: string; hid: Boolean): Boolean;
var Flags: Integer;
begin
  Result := False;
  Flags := GetFileAttributes(PChar(FileName));
  if hid then
    Flags := Flags or faHidden
  else
    Flags := Flags and not faHidden;

  Result := SetFileAttributes(PChar(FileName), Flags);
end;

это, если

Код:
if Check.Checked then
 FileSetAttr(file, faHidden)
 else
 FileSetAttr(file, not faHidden)

совсем одинаково функционально?

Последний раз редактировалось ApplicatiOn, 19.01.2009 в 19:34.
Ответить с цитированием
  #9  
Старый 21.01.2009, 13:53
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

ну так как снять/установить "скрытый" без проблем?
Ответить с цитированием
  #10  
Старый 21.01.2009, 15:32
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
setfuileattr(filename,faReadOnly or faHidden);
Для снятия
Код:
setfuileattr(filename,0);
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #11  
Старый 21.01.2009, 16:23
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

во.. ) спасибо.. только - filesetattr() а не setfuileattr()
Ответить с цитированием
  #12  
Старый 21.01.2009, 16:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Главное что суть понятна
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter