Главная arrow Лаборатория arrow Как получить информацию о системе (свободная память и т.д.)  
30.07.2010
Главное меню
Главная
Лаборатория
Книги по дельфи
Инструменты
Статьи
Видео
Юмор
Поиск
Новости
Лента новостей
Новости Delphi
Новости проекта
Новости инструментов
Разные новости
База знаний Delphi
Общие вопросы
Windows, WinAPI
Графика, Звук
IDE Delphi
Консоль
Голосования
Нравится ли Вам данный проект
 
Каталог@Mail.ru - каталог ресурсов интернет
комментарии
Как получить информацию о системе (свободная память и т.д.) Версия для печати
Рейтинг: / 8
ХудшаяЛучшая 
Написал Alexeis   
24.07.2007

Если вы хотите узнать сколько виртуальной памяти вам доступно вашей программе или общий объем физической и виртуальной памяти достаточно воспользоваться API функцией GlobalMemoryStatus.

Рассмотрим следующий код. Добавим на форму кнопку (TButton) и многострочный редактор (TMemo). После чего в обработчик кнопки вставляем следующий код.
 
procedure TForm1.Button1Click(Sender: TObject);
var MemoryStatus: TMemoryStatus;
begin
  Memo1.Lines.Clear;
  MemoryStatus.dwLength := SizeOf(MemoryStatus) ;
  GlobalMemoryStatus(MemoryStatus) ;
  with MemoryStatus
  do
    begin
      Memo1.Lines.Add(IntToStr(dwMemoryLoad) +
        '% использованно памяти') ;
      Memo1.Lines.Add(IntToStr(dwTotalPhys) +
        ' Всего физической памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(dwAvailPhys) +
        ' Доступно физической памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(dwTotalPageFile) +
        ' Всего виртуальной памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(dwAvailPageFile) +
        ' Доступно виртуальной памяти (в байтах) ') ;
      Memo1.Lines.Add(IntToStr(dwTotalVirtual) +
        ' Адресное виртуальное простанство текущего процесса') ;
      Memo1.Lines.Add(IntToStr(dwAvailVirtual) +
        ' Доступно байт виртуального адресного пространства текущего процесса') ;
   end;
end;
В Memo1 видим всю необходимую информацию.

Источник delphi.about.com/b/a/257850.htm

Добавлено:
Пример устарел с появлением памяти более 2Гб. Переделан для Windows2000 и выше:
type
  DWORDLONG = Int64;  // ULONGLONG 
  {$EXTERNALSYM DWORDLONG}
  PMemoryStatusEx = ^TMemoryStatusEx; 
  LPMEMORYSTATUSEX = PMemoryStatusEx; 
  {$EXTERNALSYM LPMEMORYSTATUSEX} 
  _MEMORYSTATUSEX = packed record 
    dwLength        : DWORD; 
    dwMemoryLoad    : DWORD; 
    ullTotalPhys    : DWORDLONG;
    ullAvailPhys    : DWORDLONG; 
    ullTotalPageFile: DWORDLONG; 
    ullAvailPageFile: DWORDLONG; 
    ullTotalVirtual : DWORDLONG; 
    ullAvailVirtual : DWORDLONG; 
  end; 
  {$EXTERNALSYM _MEMORYSTATUSEX} 
  TMemoryStatusEx = _MEMORYSTATUSEX; 
  MEMORYSTATUSEX = _MEMORYSTATUSEX; 
  {$EXTERNALSYM MEMORYSTATUSEX}
 
procedure GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx); stdcall;
external kernel32 name 'GlobalMemoryStatus';
{$EXTERNALSYM GlobalMemoryStatusEx}
 
// Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var MemoryStatusEx: TMemoryStatusEx;
begin
  Memo1.Lines.Clear;
  MemoryStatusEx.dwLength := SizeOf(MemoryStatusEx);
  GlobalMemoryStatusEx(MemoryStatusEx);
  with MemoryStatusEx
  do
    begin
      Memo1.Lines.Add(IntToStr(dwMemoryLoad) +
        '% использованно памяти') ;
      Memo1.Lines.Add(IntToStr(ullTotalPhys) +
        ' Всего физической памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(ullAvailPhys) +
        ' Доступно физической памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(ullTotalPageFile) +
        ' Всего виртуальной памяти (в байтах)') ;
      Memo1.Lines.Add(IntToStr(ullAvailPageFile) +
        ' Доступно виртуальной памяти (в байтах) ') ;
      Memo1.Lines.Add(IntToStr(ullTotalVirtual) +
        ' Адресное виртуальное простанство текущего процесса') ;
      Memo1.Lines.Add(IntToStr(ullAvailVirtual) +
        ' Доступно байт виртуального адресного пространства текущего процесса') ;
   end;
end;
опубликовано
Добавить новыйПоиск
Alexius   2008-05-04 17:50:42
B) Неплохо. Но помому это даже вобщеобразовательных
целх в институте препадают. Не в обиду будет сказано...
Black Leopard   2008-10-23 20:50:29
нормуль. Я покаместь лам в программировании. В институт уже врядли пойду, а научиться хочется. Вот и учусь на чужих успехах ;)
Спасибо.
BoROD@   2009-11-22 15:52:49
dwTotalPhys видит тока 2Гб памяти, есть альтернатива шоб узнать объём физической памяти???????????? :( [color=red][size=lar
ge][/size][/color]
Snowy   2009-11-25 16:10:22
Переделал пример для размеров свыше 2Гб
BOGGAD     2010-01-13 22:33:44
Я вот недавно с паскаля на делфи перешёл. Подскажите, а отличий в самом построении кода много?
Добавить комментарий
Имя:
Веб-сайт:
Заголовок:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Security Image
Пожалуйста, введите проверочный код, который Вы видите на картинке.
 
< Пред.   След. >