Ничего не понимаю или ACCESS_DENIED
ps
Я всегда буду использовать именнованные константы вместо магических чисел.
Я всегда буду использовать именнованные константы вместо магических чисел.
Я всегда буду использовать именнованные константы вместо магических чисел.
Я бы с радостью всегда использовал именованные константы, но VC не выдает мне FILE_SHARE_READ, OPEN_ALWAYS, GENERIC_READ etc в списке. Надо что-то подключить? Access Denied выдается по прежнему. Может быть, он не успевает закрыть файл? (бред... а вдруг не бред?)
2. 0x40000000 - это GENERIC_WRITE, GENERIC_READ равен 0x80000000
- в каком IDE ты пишешь?
На константы не ругается, но почему он тогда не выдает их в Intellisense и как его заставить это делать?
Visual C++ 6.0
ЗЫ: Я говорю про встроенный в VS.NET
Скомпили Browse Information в проекте. Самое простое - по правому клику по такой именованной константе выбери Go to declaration of 'blablabla' - компилятор возмутится и спросит нужно ли тебе бровс информейшн делать. Если и после этого не находит - добавь заголовочные файлы винды, да побольше.
ps
Для более корректной работы Intellsence-а рекомендую поставить VisualAssist.
При наличии имен вместо чисел - данная опечатка сразу бы бросилась в глаза, а с магическими числами приходится только пожимать плечами...
Скомпили Browse Information в проекте...Это может помочь узнать, что значение GENERIC_READ такое-то, что нафиг не нужно. Нужно, чтобы он мог подсказать, какие константы имеет смысл ставить в качестве такого-то параметра, он это не умеет.
Это может помочь узнать, что значение GENERIC_READ такое-то, что нафиг не нужно. Нужно, чтобы он мог подсказать, какие константы имеет смысл ставить в качестве такого-то параметра, он это не умеет.ЛОЛ.
Вот у меня в мане на функцию open перечислены константы, задающие флаги.
По-моему, удобно, когда этот список легко доступен.
Но предполагать, что интеллисенс будет по контрлпробелу выкидывать их список как-то эээ... загадочно =)
А что ему может помешать?
В шарпе такое возможно по единственной причине - там вообще все флаги сделаны не в виде
#define ZZZ_FLAG1 1024
а в виде
enum ZzzFlag
{
flag1 = 1024,
}
и параметры у функций соответсвующие. Автоподсказка при этом появлятся когда ты уже напишешь в качестве параметра "ZzzFlag.". Вот.
А ЛОЛ - потому что телепатию еще не изобрели =)
Всего лишь нужно знать, где искать описания библиотечных функций.
Мне казалось, это уже лет 5, а то и 10, делают. Я видел Delphi 3 (мой последний опыт программирования под MS там уже было такое...
проблема в том, что как раз этих описаний ни у кого и нет.
Нет описаний? А как же вы программируете?
ps
документация и мета-описания - это совершенно независимые вещи.
В машинночитаемом виде
Странно, что за 15 лет или сколько там лет функции CreateFile не написали эти описания, за деньги же работают.
Значит, я переоценивал возможности IDE, издали чужой пирог кажется вкуснее
Нет, в конце концов написали конечно же. Только в шарпе =)
Если функция грамотно описана, то IDE нормально подсказывает.
грамотно описанная функция - это:
OpenFile(
const char * path,
FileMode mode,
FileAccess access,
FileShare share,
int bufferSize
);
неграмотно описанная:
OpenFile(
void * path,
DWORD mode,
DWORD access,
DWORD share,
DWORD bufferSize
);
Ничего не понимаю.
так библиотечным функциям лет по 15-20 уже будет.
И до сих пор IDE не знает, какие у них должны быть параметры.
А зачем тогда такое IDE нужно?
vc 6 - которая обсуждается в данном треде - была выпущена примерно 8 лет назад.
так бы и сказали сразу
И до сих пор IDE не знает, какие у них должны быть параметры.ээээ. Выделять некоторые библиотеки изо всех остальных и хардкодить в ИДЕ поЦказки при их использовании - очень плохо. Не только как источник забавных ошибок, но и поскольку лоббирует библиотеки аффтара ИДЕ.
А зачем тогда такое IDE нужно?
Переписывать виндовс.аш так, как говорит ДаркГрей, чуваков из М$ почему-то заломало. Возможно, их просто заломало. Возможно, им не захотелось парится с синхронизацией двух версий всего этого говна - с дефайнами же тоже надо из соображений backward compatibility оставить. Возможно, возникают какие-нить проблемы при использовании чистого С (хотя вряд ли).
А причем тут шестая студия? Седьмая точно так же себя ведет (а что она может поделать?). А возможность делать комменты к функциям типа вот так:
/////////////////////
// mega-comment
void f;
так чтобы всплывала поцказка со словами "мега-коммент" уже очень давно была. Не помню как давно.
Оставить комментарий
Vladislav177Rus
При запуске этой программы создается файл с указанным содержимым, он открывается, его размер правильно определяется, но ReadFile возвращает 0, а GetLastError 5, т.е. отказано в доступе. Закрывается файл тоже нормально. В чем может быть дело?