[prg] C++. Определение размера диска
Здравствуйте, уважаемые!
Написал коротенькую программку, которая в текстовый файл должна сохранять
размер заданного диска и его свободный объем. Программа компилируется, но
выдает ошибку при запуске - по всей видимости, , в программе какая-то
логическая ошибка, но какая, я пока не разобрался. Посмотрите, пожалуйста:
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
int main () {
ofstream outfile("out.txt");
DWORD FreeBytesAvailable;
DWORD TotalNumberOfBytes;
DWORD TotalNumberOfFreeBytes;
string sDisk="C:\\";
BOOL flag = GetDiskFreeSpaceEx(
(LPCSTR)sDisk.c_str(),
(PULARGE_INTEGER)&FreeBytesAvailable,
(PULARGE_INTEGER)&TotalNumberOfBytes,
(PULARGE_INTEGER)&TotalNumberOfFreeBytes
);
if (flag != 0) {
outfile << "Свободно: " << (unsigned long)TotalNumberOfFreeBytes << endl;
outfile << "Размер диска: " << (unsigned long)TotalNumberOfBytes << endl;
}
else outfile << "Размер диска определить не удалось!" << endl;
outfile.close();
return 0;
}
Администратор Самарского голосового чата,
Самарского сервера LKF-книг
Грызунов Александр Викторович.
Программа для скачивания LKF-книг с Самарского сервера:
http://www.samaraobs.ru/lkf/lkf_start.exe
Программа для общения в Самарском голосовом чате:
http://samaraobs.ru/chat/TeamTalk.exe
Добрый день!
Могу ошибатся но по-моему dword это 32-х битовый тип. Т.е. значения от
-2 миллиарда с небольшим до +2 миллиарда с небольшим. Учитывая современные
объёмы жёстких дисков, значения в переменных будут намного больше. Так
что значения в dword в runtime превратятся в неизвестно что. Лучше использовать
Long или ему подобные. Уже не помню, но какие-то аналоги есть.