Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Информация о диске

29.04.2012, 21:28. Показов 5880. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
Size=DiskSize(3); // ïîëó÷àåì ðàçìåð âûáðàííîãî äèñêà
  FreeSpace=DiskFree(3); // ïîëó÷àåì ñâîáîäíîå ïðîñòðàíñòâî
  if(Size>0) { // åñëè ðàçìåð äèñêà íå ðàâåí 0
    Edit2->Text=IntToStr(Size/1024/1024/1024); // âûâîäèì îáùèé îáúåì äèñêà ïðîñòðàíñòâî
    Edit3->Text=IntToStr(FreeSpace/1024/1024/1024); // âûâîäèì ñâîáîäíîå ïðîñòðàíñòâî
    Edit4->Text=IntToStr((Size-FreeSpace)/1024/1024/1024); // âûâîäèì çàíÿòîå ïðîñòðàíñòâî
Использую код получения информации
Как его сделать Красивее?
Вывод инфы:
Допустим Размер диска 32 гигабайта 421 мегабайт...
(3) - нужно указывать номер диска, можно ли сделать так
В Edit1->имя диска формата A://
Он получается - 1
A:// - 1
C:// - 3
Как бы это всё автоматизировать?
Или найти другой способ получения инфы о диске
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2012, 21:28
Ответы с готовыми решениями:

Не отображается информация на диске D
Установил ХР на диск С, в моем компьютере отображаются оба диска, но при открытии диска Д информации нет (хотя вроде бы заполнен по...

Информация о жестком диске
Подскажите, как вытащить информацию о физических дисках ( ну , например, их количество)? В вин апи нашел только возможности вывода инфы о...

Информация о жестком диске
как получить сколько занято и свободно на Жеском диске? объем винта получить могу, а вот это нет :(testerka, кросспостинг запрещен - п....

45
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.04.2012, 21:50
Свободное дисковое пространство
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.04.2012, 22:45  [ТС]
C++
1
out += "\nСвободно на диске: " + AnsiString(TotalNumberOfFreeBytes) + "\n";
Мы получаем в байтах, а как получить в таком Виде 32 гигабайта 218 мегабайт?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
29.04.2012, 23:11
C++
1
2
 IntToStr(TotalNumberOfFreeBytes/1024/1024/1024) + " гигабайтов,  " +
 IntToStr(TotalNumberOfFreeBytes/1024/1024) + " мегабайтов."
2
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.04.2012, 23:14  [ТС]
C++
1
            Memo1->Lines->Add("Размер диска: " + AnsiString(TotalNumberOfFreeBytes/1024/1024)+ " мегабайт")
Чуть опоздал....
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.04.2012, 23:17
Учитывая, что 1 кб = 1024 б и т.д., делить, наверное, и int может оказаться мало, когда-то в разделе это обсуждалось, относительно int64 .
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.04.2012, 23:17  [ТС]
А если в таком виде 7,565 гиг. если так то получаем TotalNumberOfFreeBytes/1024/1024/1024 - 7гиг.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.04.2012, 23:20
потому что целое, а надо число с запятой
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.04.2012, 23:21  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
потому что целое, а надо число с запятой
Я понимаю что int целые числа(Без остатка), другой тип нужно использовать?К примеру double?Он вроде с двойной точностью...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.04.2012, 23:28
как-то-так
C++
1
float discsize = (TotalNumberOfFreeBytes/1024/1024/1024).ToDouble();
Добавлено через 4 минуты
Размер файла
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
29.04.2012, 23:37  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
float discsize = (TotalNumberOfFreeBytes/1024/1024/1024).ToDouble();
Ошибку выдаёт, а так
C++
1
 float discsize = (TotalNumberOfFreeBytes/1024/1024/1024);
Не верно считает...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
30.04.2012, 00:26
Вырабатывайте привычку приводить текст ошибки и укзывать, например, в данном случае, как неверно считает.

Добавлено через 1 минуту
C++
1
double discsize = (TotalNumberOfFreeBytes/1024/1024/1024).ToDouble();
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.04.2012, 00:31
C++
1
2
3
      __int64 szd = DiskSize(4);
      szd = szd/1024/1024/1024;
      Memo1->Lines->Add(IntToStr(szd));
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
30.04.2012, 00:48  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
__int64 szd = DiskSize(4);
szd = szd/1024/1024/1024;
Memo1->Lines->Add(IntToStr(szd));
Но это делит не правильно, вместо 7,8 гига показывается 7...Не тот тип...делится без остатка

Добавлено через 1 минуту
Цитата Сообщение от LK Посмотреть сообщение
Вырабатывайте привычку приводить текст ошибки и укзывать, например, в данном случае, как неверно считает.
C++
1
 E2294 Structure required on left side of . or .*
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
30.04.2012, 00:58
Н-да, сам вот думаю, зачем там ToDouble .
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.04.2012, 01:01
тогда так__
C++
1
2
3
4
5
6
      __int64 szd = DiskSize(4);
      float ff = szd ;
      ff /= 1024,0 ;
      ff /= 1024,0 ;
      ff /= 1024,0 ; 
      Memo1->Lines->Add(FloatToStrF(ff,ffNumber,7,2));
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
30.04.2012, 01:29  [ТС]
Цитата Сообщение от EdarGp Посмотреть сообщение
float discsize = (TotalNumberOfFreeBytes/1024/1024/1024);
Вот я и и убрал, но всё ровно не верно считает...

Добавлено через 9 минут
C++
1
2
      float ff = (TotalNumberOfFreeBytes/1024.0/1024.0/1024.0);
      Memo1->Lines->Add(FloatToStrF(ff,ffNumber,7,2));
Тогда вот так нужно)Спасибо)

Не по теме:


Кнопка спасибо уже не работет)



Добавлено через 6 минут
Цитата Сообщение от EdarGp Посмотреть сообщение
ff,ffNumber,7,2)
Только поясните эту строчку?

Добавлено через 11 минут
C++
1
Memo1->Lines->Add("Ìåòêà òîìà: " + AnsiString(drive_label));
А можно её не выводить - Если нет символов?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
30.04.2012, 01:53
Функция FloatToStrF
возвращает вещественное значение Value в виде форматированной строки. Аргумент Format определяет, как форматируется число. Precision - это количество значащих цифр, Digits - обычно количество цифр после десятичной точки. Форматированная строка поможет содержать разделители DecimalSeparator и ThousandSeparator
Независимо от значения Format плюс бесконечность всегда форматируется как строка INF, минус бесконечность- как -INF. "Спокойный" NaN форматируется как MAN. (Строки IMF и NAN не могут быть локализованы.) Для конечных значений параметр Format работает следующим образом:
ffCurrency
Число форматируется с использованием значений CurrencyFormat или NegCurrFomat (например, $31 415,00). Digits определяет количество знаков после десятичной точки. Если Digits равно нулю десятичный разделитель не выводится.
ffExponent
Форматирует число в соответствии с научной нотацией (например -3,14Е+01). Всегда присутствует минимум одна цифра перед десятичным разделителем, Precision определяет общее число форматируемых символов. Digits определяет количество цифр в экспоненте, которое может быть в диапазоне от 1 до 4. Экспонента всегда начинается со знака "плюс" или "минус". При необходимости перед всем числом указывается знак "минус".
ffFixed
Число форматируется в соответствии с фиксированной десятичной нотацией (например -3141.59). Как минимум одна цифра всегда присутствует перед десятичным разделителем. Если слева от десятичного разделителя требуется более чем Precision цифр, формат автоматически меняется на ffExponent.
ffGeneral
Форматирует число в соответствии с фиксированной или экспоненциальной нотацией: по возможности применяется фиксированная нотация, в противном случае - экспоненциальная. Для чисел менее 0, 00001 всегда используется экспоненциальная нотация. Ведущие нули удаляются, и если перед десятичной точкой нет цифр, символ разделителя также удаляется.
ffNumber
Форматирует строку в фиксированном формате, но использует символ TnousanclSeparator для разделения тысяч, миллионов и т. д. (например-314 159,26535).
Добавлено через 7 минут
Цитата Сообщение от EdarGp Посмотреть сообщение
C++
1
Memo1->Lines->Add("Ìåòêà òîìà: " + AnsiString(drive_label));
А можно её не выводить - Если нет символов?
Если я правильно понял... Проверяете длину AnsiString(drive_label) - если не 0 - выводите , в противном случае - не выводите - как обычно: if-else . Хотя мне непонятно, откуда взялся этот кода, наверное, можно поизвращаться с самим drive_label , если знать, что это такое .
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
30.04.2012, 01:57  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
если знать, что это такое .
Я не так выразился, да если нету у диска названия не добавлять строку Метка тома
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
30.04.2012, 02:06
Я понял и схемку написал, но, на мой вгляд, пусть бы было, например, в таком:
Диск: С
Метка тома: System
Диск: D
Метка тома:
Диск: E
Метка тома: Lalafa
ничего плохого не вижу, встречал такое во многих утилитах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2012, 02:06
Помогаю со студенческими работами здесь

Информация о железе на жестком диске
Собственно, сабж. Есть жесткий диск. Можно ли как-нибудь узнать, на каком железе была последняя загрузка/загрузки ОСи с этого винчестера?...

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

Информация о первом логическом диске расширенного раздела
1) Реализация прямого программного доступа к системным структурам физического диска 2) Реализация операций с файлами/каталогами...

Как убедиться,что на неисправном диске моя информация?
Отдала на бесплатную диагностику внешний жёсткий диск,а отдали не мой,с другим,полустёртым номером и сказали,что стоить извлечение данных...

Вся информация на жестком диске сбросилась до 2010 года
Здравствуйте все! Возникла проблема. Преамбула такова: звонит родственник и говорит, что Windows XP при загрузке выдал черный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru