23.01.2018, 01:17 [+3 UTC]
в нашей команде: 2 493 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.42 (30.12.2017)

Общие новости:
02.01.2018, 09:46

Форум:
12.01.2018, 10:25

Последний вопрос:
22.01.2018, 21:44

Последний ответ:
22.01.2018, 23:40

Последняя рассылка:
22.01.2018, 22:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
23.08.2009, 09:05 »
Медведева Елена Владимировна
Молодцы! Так держать!!!
10.06.2011, 17:23 »
TAIDA
Благодарю! Уже кое что проясняется! [вопрос № 183575, ответ № 267672]
23.02.2012, 11:27 »
Дебелов Владимир Валентинович
Владислав, Спасибо вам большое за помощ!!! [вопрос № 185466, ответ № 270021]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 605
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 369
CradleA
Статус: Профессионал
Рейтинг: 229

Перейти к консультации №:
 

Консультация онлайн # 140116
Раздел: • С / С++
Автор вопроса: Муратов Радик Анатольевич
Отправлена: 17.07.2008, 11:07
Поступило ответов: 0

Здравствуйте эксперты !

Подскажите пжлста почему приведенный ниже кусок кода не создает папку скрытую. И как создавать скрытую?
Заранее спасибо.
С++Билдер6

Приложение:

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 140116

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 17.07.2008, 17:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Странно, у меня создает... smile
Создается папка и устанавливаютя атрибуты, все как положено...

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 17.07.2008, 17:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

А может, в свойствах папки включено отображение "защищенных системных файлов"?
Эти атрибуты дают весьма условную скрытность.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.


Посетитель

ID: 218250

# 3

= общий = | 18.07.2008, 08:03 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Нет, отображение "защищенных системных файлов" выключено. Причем ручками через explorer атрибуты устанавливаются, и папка действительно скрывается

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 4

= общий = | 18.07.2008, 10:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Тогда вопрос: Что возвращает функция FileSetAttr ?
Если она отрабатывает, то возвращает ноль, иначе - код ошибки.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.


Посетитель

ID: 218250

# 5

= общий = | 18.07.2008, 10:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Возвращает 0

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 6

= общий = | 18.07.2008, 11:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Муратов Радик Анатольевич

Так Вам нужно создать скрытую папку или скрыть уже существующую?

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 7

= общий = | 18.07.2008, 11:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Тут как раз понятно: Сначала создается, потом меняются атрибуты у только что созданной...
Непонятно другое: У меня прекрасно все работает!
Еще одно предложение - попробуйте изменить только часть атрибутов, например так:
FileSetAttr("MyFolder", faReadOnly | faHidden | faArchive);
Или вообще только что-то одно. И проверить результат.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.


Посетитель

ID: 218250

# 8

= общий = | 18.07.2008, 11:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Для sir henry: создать скрытую

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 9

= общий = | 18.07.2008, 12:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Я ведь не зря об этом спросил. :)
Если внимательно посмотреть на код, то можно увидеть, что когда данная папка уже существует, то код не отрабатывает.
Других причин я не вижу.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 10

= общий = | 18.07.2008, 12:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Муратов Радик Анатольевич

Попробуйте изменить код следующим образом:

if (!DirectoryExists("MyFolder"))
CreateDir("MyFolder");

FileSetAttr("MyFolder", faHidden);

Уверен, всё заработает самым великолепным образом. ;)
И Игорь Витальевич совершенно прав - чтобы скрыть папку одного аттрибута faHidden совершенно достаточно.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 11

= общий = | 18.07.2008, 12:19 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

2 sir henry:
Раз автор говорит, что функция возвращает 0, значит, все-таки, перед повторным запуском удаляет созданную папку... smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 12

= общий = | 18.07.2008, 12:40 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Лысков Игорь Витальевич

Это всего лишь предположение. smile
Хорошо, а какие ещё могут быть предположения?
Я бы предложил сделать вот что:

ShowMessage(IntToStr(FileSetAttr("MyFolder", faHidden)));

чтобы убедиться...
И в любом случае, FileSetAttr() лучше вынести за скобки, т.к. к созданиюсуществованию папки эта функция не имеет никакого отношения.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 13

= общий = | 18.07.2008, 12:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

2 sir henry:
Да, конечно, "за скобки" будет корректнее.
Ждем комментариев автора...Ау!

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 14

= общий = | 18.07.2008, 13:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Хм, после получения вопроса я вначале заглянул в MSDN и посмотрел на родственную ф-ю SetFileAttributes
Так вот, в комментариях там записано:

The following table describes how to set the attributes that cannot be set using SetFileAttributes..
(Следующая таблица описывает, какие атрибуты не могут быть установлены при помощи SetFileAttributes)
Оставил только интересующие нас

FILE_ATTRIBUTE_DIRECTORY Files cannot be converted into directories. To create a directory, use the CreateDirectory or CreateDirectoryEx function.
(файл не может быть сконвертирован в директорию. Для создания директории используйте...)
FILE_ATTRIBUTE_SYSTEM This attribute cannot be set.
(Этот атрибут не может быть установлен)
Сначала подумал: О! вот оно. А потом попробывал в Builder-е, и убедился, что все-равно работает!...
Это так, информация к размышлению, может быть в других версиях (SP) это было подправлено...
У меня простая XP без всяких SP...

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 15

= общий = | 18.07.2008, 13:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Лысков Игорь Витальевич

У меня XP SP3. Установка всех аттрибутов сразу тоже не вызывает проблем, хотя вот faDirectory мне отчего-то не кажеться такой уж остро необходимой в данном случае. smile Да и в любом случае, эти аттрибуты просто не отработают вместе этой функцией, но ошибку не вызовут.
Посмотрел сейчас тоже MSDN, там у меня никаких предупреждений по поводу FILE_ATTRIBUTE_SYSTEM нет. Да и если так посмотреть, если я, в FAR'е например, могу поставить аттрибут файла "системным", то отчего ж не сделать и с помощью этой функции такого же...

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)


Посетитель

ID: 218250

# 16

= общий = | 18.07.2008, 14:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

пробовал на нескольких компьютерах, на некоторых работает, не некоторых нет :(

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 17

= общий = | 18.07.2008, 14:32 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

2 sir henry:
Посмотрел в более поздней версии MSDN, там, действительно, FILE_ATTRIBUTE_SYSTEM нет. И это правильно! Все встало на свои места.
2 Муратов Радик Анатольевич:
Вы пробывали устанавливать атрибуты по одному? Каков результат?
Хм. А вот вопрос...Может не хватает прав пользователя для изменения атрибутов? Уж не знаю, что уже и думать... smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.


Посетитель

ID: 218250

# 18

= общий = | 18.07.2008, 15:21 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Права админа у меня, по одному еще не прбовал, сейчас попробую

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 19

= общий = | 18.07.2008, 18:33 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Лысков Игорь Витальевич

"Может не хватает прав пользователя для изменения атрибутов?"
Нет, если папка создаётся тут же, то и все права у создателя будут.

Муратов Радик Анатольевич

А какая операционная система?

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)


Посетитель

ID: 218250

# 20

= общий = | 28.07.2008, 15:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

система XP sp2

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 21

= общий = | 28.07.2008, 17:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Какая файловая система на диске, где создаётся папка?

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)


Посетитель

ID: 218250

# 22

= общий = | 30.07.2008, 13:33 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

система FAT32

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 23

= общий = | 30.07.2008, 14:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Муратов Радик Анатольевич

"система FAT32"
"пробовал на нескольких компьютерах, на некоторых работает, не некоторых нет"
Вот из тех компьютеров, на которых код тоже не работает, все с FAT32 или нет?
Просто была у меня аналогичная проблема - не было доступа к файлу именно в системе с FAT32, хотя там у файловой системы в принципе нет никаких аттрибутов безопасности. Переконвертировал в NTFS, раздал правильные права доступа и всё заработало как часы.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)


Посетитель

ID: 218250

# 24

= общий = | 31.07.2008, 11:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

к сожалению, смогу проаерить еще раз только в понедельник, так как сейчас в отпуске

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16394 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.42 от 30.12.2017