|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
|
Как преобразовать большое число int64 в VARIANT чтобы затем его вывести на экран26.09.2012, 01:16. Показов 3381. Ответов 10
Метки нет (Все метки)
Работаю с WMI,получаю размер диска. Тип данных int64 (согласно докам MSDN), после операции Get получаем переменную vtProp типа VARIANT, чтобы вывести значение на экран надо делать примерно так:
MessageBox::Show("Размер диска= " + Convert::ToString(vtProp.uintVal); При этом информация о размере выдается неверная.Тоже самое с vtProp.ulVal (int64 это насколько я понял unsigned long) Добавлено через 1 минуту Для небольших значений (int16 и int32) этот способ работает. А когда большие числа, получается размер в байтах например 40 ГБ это 40*10^9 цифр надо
0
|
|
| 26.09.2012, 01:16 | |
|
Ответы с готовыми решениями:
10
Как преобразовать большое число в строку
|
|
2 / 2 / 0
Регистрация: 18.09.2012
Сообщений: 26
|
||||||
| 26.09.2012, 14:05 | ||||||
|
__int64 - это signed long long. Размер дисков/файлов обычно возвращается значением типа ULONGLONG (unsigned long long).
0
|
||||||
|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
||||||
| 26.09.2012, 20:43 [ТС] | ||||||
|
Сделал вот так,всё равно не работает:
0
|
||||||
|
2 / 2 / 0
Регистрация: 18.09.2012
Сообщений: 26
|
||||||
| 27.09.2012, 13:31 | ||||||
|
Почему бы вместо VARIANT не использовать System::Int64?
0
|
||||||
|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
|
| 27.09.2012, 13:38 [ТС] | |
|
Моя проблема описана тут:
http://www.experts-exchange.co... 51623.html The values are uint64 type, but impossible to retrieve them into the VARIANT struct. Только там нет ответов
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2012
Сообщений: 26
|
||||||||||||||||
| 27.09.2012, 14:23 | ||||||||||||||||
|
Почитал о VARIANT и IWbemClassObject::Get:
http://msdn.microsoft.com/en-u... s.85).aspx http://msdn.microsoft.com/en-u... s.85).aspx Действительно, System::Int64 не прокатит. Может быть, возвращается не размер, а указатель на него:
Если функция всё-таки возвращает размер диска как unsigned long long, то должен работать следующий код:
0
|
||||||||||||||||
|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
|
| 27.09.2012, 18:56 [ТС] | |
|
Оба варианта не работают.Т.е. работают но выдают чушь вместо размера.
Вот прилагаю исходники,можете сами попробовать: (сделаны на VS2008 ,но должны работать везде)
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2012
Сообщений: 26
|
||||||
| 27.09.2012, 19:51 | ||||||
|
Нужно так:
1
|
||||||
|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
||||||
| 27.09.2012, 20:31 [ТС] | ||||||
|
Да,чего то я в самом деле идиот) Я вроде первый раз так и делал,но не работало.А сейчас работает
Меня ещё сбило с толку,что в примерах на VB размер выводится как vtProp.uintVal А как теперь сделать,чтобы размер выводился в Гигабайтах? Преобразовать String в double, а потом наоборот в строку? Добавлено через 22 минуты Вот такие извращения получились:
0
|
||||||
|
2 / 2 / 0
Регистрация: 18.09.2012
Сообщений: 26
|
||||||||||||||||
| 28.09.2012, 12:22 | ||||||||||||||||
|
Рекомендую проверить, какой именно размер диска получает функция Get c параметром "Size". Нужно читать документацию. В Windows (по правому клику) отображается несколько больший размер диска. Возможно, возвращается полный размер неформатированного диска.
Добавлено через 14 минут Можно так переводить в мегабайты:
Ещё учтите, что производители используют метрические систему для размера диска, т.е. 500 GB = 500 * 10^9 = 500 * 1000 * 1000 * 1000 байт, а не 500 * 1024 * 1024 * 1024 байт. Так что диск на 500 GB, на самом деле, на 465
0
|
||||||||||||||||
|
1 / 1 / 1
Регистрация: 29.09.2011
Сообщений: 57
|
|
| 28.09.2012, 13:43 [ТС] | |
|
Вообще я хочу не в int выводить ,а вот так: "467,35 ГБ" . Т.е. это будет вещественное число с плавающей точкой и 2-мя знаками после запятой.
У меня будет выдаваться размер физического диска и суммироваться размер всех его партиций,и всё это сравнивать - типа,нет ли где неразмеченного пространства. А ещё есть интересный глюк с параметров TotalCylinders - он у меня выводится правильно только для 2 винчестеров из 6. Видимо,что-то накосячили с драйверами или WMI Добавлено через 5 минут Для тех новичков,кто будет разбираться с WMI могу сказать что исходник который я выложил можно использовать для получения информации об абсолютно любом устройстве в системе. Меняется только класс,например Win32_Printer и название параметра,например Caption или FreeSpace. Т.е. структуру WMI можно использовать вообще везде и ничего не выдумать нового Добавлено через 1 минуту Только некоторые параметры поддерживаются начиная с Vista и выше.Поэтому надо смотреть описание в MSDN.
0
|
|
| 28.09.2012, 13:43 | |
|
Помогаю со студенческими работами здесь
11
Как преобразовать большое число в строку через stringstream и ограничить знаки после точки
Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|