IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Свободное место на диске, VC++ 2008 EE
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Требуется определить свободное место на диске..
Сначала хочу получить список всех дисков в системе, чтобы потом для каждого применить функцию GetDiskFreeSpaceEx()..
Как раз проблема с получением дисков..

#define MAX_PATH_SIZE 260
.......
wchar_t drive[MAX_PATH_SIZE]={0};
if (GetLogicalDriveStrings(MAX_PATH_SIZE,drive))
{
SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)drive);
}


GetLogicalDriveStrings(MAX_PATH_SIZE,drive) возвращает 16..
В итоге получают в drive только C:\...ну а ещё в системе есть D и E..
Объясните пожалуйста, я в чём-то не права?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
lpBuffer [out]

A pointer to a buffer that receives a series of null-terminated strings, one for each valid drive in the system, plus with an additional null character. Each string is a device name.
Понимаешь, в чем дело? Не одну строку содержит буфер, которая заканчивается нулем, а несколько строк, разделенных нулями. А если ты просто печатаешь буфер, то печатается все как раз до первого нуля-разделителя... Вот так будет работать:

	wchar_t drive[MAX_PATH_SIZE] = {0};
wchar_t Drives[3] = {0};
wchar_t *p;
if (GetLogicalDriveStringsW(MAX_PATH_SIZE, drive)) {
p = drive;
do {
wsprintfW(Drives, L"%s", p);
SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)Drives);
// Memo1->Lines->Add(Drives);
while(*p++);
} while(*p);

}
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 20:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name