Отправляет email-рассылки с помощью сервиса Sendsay

За 2013-11-10

[prg] Re[3]: C++. Определение размера диска

Приветствую всех.

> Но из-за языкового барьера многого не
> понял.

Минимум, что вам нужно было понять, это объявление функции, написанное на языке
программирования C или C++. Непонимание именно этого языка является причиной
ошибок, а не английского.
Вторая причина -- это враждебное отношение к используемому компилятору. Это характерно
для начинающих программистов -- они всегда ведут борьбу с используемым компилятором,
считая его основным препятствием для проявления своих программерских талантов.
Вы собственными руками заткнули рот своему компилятору, применив ручное приведение
типов к аргументам функции GetDiskFreeSpaceEx().
Очевидно, что без такого приведения компилятор сообщал об ошибке из-за несоответствие
типов аргументов и используемых переменных.
Вместо того, чтобы задуматься над тем, почему компилятор выдает сообщение об
ошибке и разобраться с типом ULARGE_INTEGER, вы сказали компилятору "заткнись,
я лучше знаю, что надо" и в результате получили неработающее приложение.
Не меньшая проблема и с ручным приведением типов при выводе результатов в файл:
оператор << является перегруженным, т.е. конкретная его реализация зависит от
типа аргумента, а вы совершенно произвольным образом меняете этот тип, не задумываясь
о последствиях. Кстати, в вашем случае это совершенно бесполезно, так как DWORD
и unsign long это одно и то же:
http://msdn.microsoft.com/en-us/library/cc230318.aspx
This type is declared as follows:
typedef unsigned long DWORD, *PDWORD, *LPDWORD;

И не надо ничего искать: в VisualStudio можно поместить курсор на нужный тип
или имя функции, открыть контекстное меню и выбрать пункт "Перейти к объявлению"
(или что-то в этом роде). После чего вам останется лишь внимательно прочитать
те строки заголовочного файла, в которых объявлен интересующий вас тип или функция.
И так дальше, пока вы не выясните для себя смысл всех проблемных элементов кода.

Анатолий.

   "i_chay" 2013-11-10 12:15:48 (#2867148)

[prg] Re[2]: C++. Определение размера диска

Документацию я разумеется читал. Но из-за языкового барьера многого не
понял. Разобрался лишь в том, что тип переменных должен быть 64-разрядным,
но как это сделать нашел только сейчас, к примеру:

__int64 TotalNumberOfBytes;

Почему-то в документации на msdn очень много теории, но примеров я встречал
чрезвычайно редко. Мне опять скажут - да ты и искать-то не умеешь - да, не
умею, поэтому не позорьте меня перед всеми, а лучше подскажите где удочку
можно разыскать или удочку подремонтировать, готовая рыба мне самому не
нужна.

p.s. Программисты также как и все люди бывают разные - одни выдающиеся, а
другие на всю жизнь остаются начинающими - это я про себя :-(

С уважением
Грызунов Александр.

   2013-11-10 03:32:13 (#2866974)