Главная страница
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.015 c
1-100752
Lexer
2003-07-15 19:19
2003.07.31
Выделение слов в TRxRichEdit.


6-100857
LORD
2003-05-25 22:54
2003.07.31
перехват трафика TCP IP


3-100626
viktor
2003-07-07 13:35
2003.07.31
cat := CreateOleObject( ADOX.Catalog )


3-100543
Sheng
2003-07-11 09:14
2003.07.31
Переиндексация БД


1-100755
bura
2003-07-16 12:39
2003.07.31
Интерфейс XP