Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2009, 14:19   #1
Pr1meEX
Пользователь
 
Регистрация: 16.06.2009
Сообщений: 15
Восклицание оперативная память

Каким образом достать с помощью С++ или Delphi в консольном режиме достать сколько занято/свободно ОП. ОС Windows XP.
Заранее благодарен!
Pr1meEX вне форума Ответить с цитированием
Старый 16.06.2009, 17:32   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Delphi
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

var Mem: TMemoryStatus;

begin
Mem.dwLength := sizeof(Mem);
GlobalMemoryStatus(Mem);
writeln('Load: ', Mem.dwMemoryLoad / 100 * Mem.dwTotalPhys:1:0);
writeln('Free: ', Mem.dwAvailPhys);
end.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 16.06.2009, 19:30   #3
Pr1meEX
Пользователь
 
Регистрация: 16.06.2009
Сообщений: 15
По умолчанию

спасибо! премного благодарен!

хм.... работает... но каждый раз выдает в общем(полный обьем ОП) неправильно на 1-10 мб меньше чем реальный обьем.. в чем может быть проблема?

Вот переделал теперь все норм пашет:

Код:
program memory;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows;

var Mem: TMemoryStatus;

begin
Mem.dwLength := sizeof(Mem);
GlobalMemoryStatus(Mem);
writeln(Mem.dwTotalPhys-Mem.dwAvailPhys);//занятая оперативка
writeln(Mem.dwAvailPhys);//свободная
writeln(Mem.dwTotalPhys);//Полный объем
end.
у тебя глюк в етой строке:
Код:
writeln('Load: ', Mem.dwMemoryLoad / 100 * Mem.dwTotalPhys:1:0);
Все равно спасибо долго бы без тебя мучался!

Последний раз редактировалось Stilet; 17.06.2009 в 08:55.
Pr1meEX вне форума Ответить с цитированием
Старый 16.06.2009, 23:28   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Я уж не знаю, почему разработчики так сделали, но в Mem.dwMemoryLoad заносится не объём занятой памяти, а процент от общей. Так что там наверно из-за округления мегабайты терялись
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16
Оперативная память ogurchik Компьютерное железо 12 12.12.2008 15:42
Оперативная память ogurchik Компьютерное железо 1 02.09.2008 19:39
Оперативная память (Делфя) Simply-Art Общие вопросы Delphi 23 21.01.2008 20:02
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59