![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Здраствуйте, вот код
Вообщем при нажатии на кнопку, програма выводит список разделов, при попытке получить обьем памяти вообе, обьема свободной и обьема занятой выводит какие то не понятные числа. ![]() Подскажите кто может где я ошибаюсь и как это исправить |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
http://msdn.microsoft.com/en-us/library/aa...28VS.85%29.aspx
ULARGE_INTEGER это НЕ unsigned long тип. sizeof(long) = 4 (на x86 , впрочем и на x64 в видении майкрософта тоже 4), у вас странно что вообще не вылетает все нафиг, т.к. вы перещаписываете буфер. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Кстати, ваш GetDiskFreeSpaceEx всегда возвращает свободное место на диске D: (см его первый параметр). Это так и было задумано?
|
|||
|
||||
rAccOOn |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Да, я хотел выводить пока тока диск D, п потом когда уже пойму как это делать то можна будет и поменять. Добавлено @ 18:02
Теперь же при выводе получаються вот такие значения ![]() Хотя у меня на диске D: 476937 метров общий обьем. Возможно я не так преобразовую полученые данные, но если убрать преобразование полностью то вылазиет 3 ошибки о том что при переводе могут потеряться данные. и у меня появилась мысль о том что может надо переводить не в char а в какой то другой тип, или сделать надо что то еще или наоборот что то другое. PS: спасибо за разяснение на счет типов даных Это сообщение отредактировал(а) rAccOOn - 7.10.2009, 18:03 |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
более того, itoa НЕ работает с __int64 данными, он преобразует ваш int64 к int и получает данные (с потерями, что немудрено)... Это сообщение отредактировал(а) jonie - 7.10.2009, 18:25 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
я просто не понял как его правильно использовать, и как его можна всунуть. Еси можете и вам не сложно напишите пример на одной из трех переменых. заранее спс
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
|
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Может для этого надо еще какую то библеотеку подключить, потому что при компиленге вылазиет ошибка
Или обьявить его как то надо было. Это сообщение отредактировал(а) rAccOOn - 8.10.2009, 09:21 |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Угу, VS2005 называется ![]() |
||||
|
|||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
замени _stprintf_s на sprintf
|
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
аа, я пишу прогу на Visual C++ 6.0
Добавлено через 4 минуты и 57 секунд Страно, но теперь вообще ничего не выводится. |
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
а при попытке вывести значения ed1, ed2, ed3 в лист бокс, он их выводит но тоже какие то неестественые числа
на выходе получаються числа ![]() получаеться числа немного изменились но до правды далековато. Но оно работает просто как то некоректно, потому что при попытке вывести ту же инфу о дисководе или о несуществующем разделе ничего не выводит. |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
У VS (в особенности у 6й) формат печати __int64 другой -
|
||||
|
|||||
GremlinProg |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
http://msdn.microsoft.com/en-us/library/tcxf1dw6(VS.80).aspx
для беззнакового:
для знакового:
этот формат вроде бы поддерживался везде -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Это конечно страно но не первый метод ни второй не дал результата
Посмотрите пожалуйста, вот это полный код програмы, возможно что то мишает выводу. Или может дето чего то не хватает поэтому ничего и не выводится. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а что ты ожидаешь от этого кода?
ed1, ed2, ed3 тут вроде бы вообще не используются, ведь в них ты и сохраняешь результаты работы функции GetDiskFreeSpaceEx выведи их в memo или список или уж на худой конец - через _RPT, в консоль отладчика, чтобы увидеть их воочию или я что-то пропустил? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
Ну к примеру вот так я выводил
и получал ![]() А вот Everest да и так еси посмотреть получаеться должно быть всего 50 006 мб, и свободно 14 с хвостом гиг. Но все равно в паредке вывода идет сначала общий обьем памяти потом свободный и доступный, а получаеться что общий меньше свободного и доступного а такого быть не может быть да и числа не те. А я ожидал что этот код мне выведет правильные значения, ну или хотя бы очень приближеное. |
|||
|
||||
smoke_man |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 25.1.2007 Где: Рязань Репутация: 5 Всего: 17 |
Посмотри небольшой пример:
-------------------- 0x2b|~0x2b |
|||
|
||||
rAccOOn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2009 Репутация: нет Всего: нет |
спс, помогло.
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
серьезно? т.е. проблема заключалась только в передаче в sprintf структуры ULARGE_INTEGER? тогда ULARGE_INTEGER использовать предпочтительнее, а в sprintf нужно передавать Total.QuadPart Добавлено через 2 минуты и 4 секунды хотя щас только сообразил: в килобайтах размер может корректно вписываться в 32 бита, не затрагивая старшее двойное слово -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |