Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Установка аттрибутов файла   Найти похожие ветки 

 
ss300 ©   (2003-07-16 20:01) [0]

Подскажите мне мастера, каким образом можно программно снять аттрибут ReadOnly и Archive с файла??


 
Anatoly Podgoretsky ©   (2003-07-16 20:27) [1]

FileGetAttr/FileSetAttr и умение работать с битами, это к Юрию Зотову за его уроками.


 
Marser ©   (2003-07-16 22:08) [2]

Ну не обязательно знать двоичную систему(хотя и желательно знать и уметь :-) ). Константы для этого есть. Например, вот так:
var at:integer;
begin
at:=filegetattr("some.txt");
filesetattr("some.txt",at-faReadOnly-faArchive)
end;


 
Anatoly Podgoretsky ©   (2003-07-16 22:19) [3]

Именно умение работы с битами, представь что будет если в at не установлен один их этих аттрибутов. Так нельзя. Нужно не отнимать м устанавливать биты в 0.
А константы это всего лишь символические наименования соответствующих битов.


 
Marser ©   (2003-07-16 22:56) [4]


> А константы это всего лишь символические наименования соответствующих
> битов.

Я знаю. Тогда можно предварительно проверить, установлен ли соответствующий бит. Вот так:
if (at and faReadOnly>0)and(at and faArchive>0) then
filesetattr("some.txt",at-faReadOnly-faArchive);


 
Anatoly Podgoretsky ©   (2003-07-16 23:23) [5]

Все равно неверно, не соответствует задаче, не хотел приводить решение, но надеюсь, что ss300 все таки посмотрит уроки ЮЗ


begin
At := FileGetAttr("some.txt");
FileSetAttr("some.txt",at and not (faReadOnly + faArchive));
или
FileSetAttr("some.txt",at and not (faReadOnly or faArchive));
end;


 
Marser ©   (2003-07-16 23:42) [6]


> Все равно неверно

А тем не менее работает. Хотя ваш код, конечно, лучше.


 
Германн ©   (2003-07-17 02:12) [7]

2 Marser © (16.07.03 23:42)
Даже если и работает, то все равно коряво и только по счастливой случайности.
Ваш код от Marser © (16.07.03 22:56)
не пройдет, если исходно установлен только один флаг из вышеупомянутых. А код Anatoly Podgoretsky © (16.07.03 23:23) не то чтобы лучше. Он - полностью отвечает поставленной задаче и вдобавок при минимуме затрат.



Страницы: 1 вся ветка

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
7-100997
Intell
2003-04-25 07:15
2003.07.31
Как отследить местоположение чужого приложения?


14-100946
___Nikolay
2003-07-15 06:12
2003.07.31
Как зайти на www.combats.ru


4-101019
User
2003-05-27 11:00
2003.07.31
Субклассинг


3-100624
Tiny
2003-07-10 06:13
2003.07.31
Работа с БД из DLL


3-100593
paxer
2003-07-07 11:47
2003.07.31
Какие компоненты доступа к БД FireBird использовать?