unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    pbMemUsage: TProgressBar;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    txtMemTotal: TEdit;
    txtMemAvail: TEdit;
    Label3: TLabel;
    GroupBox3: TGroupBox;
    Label2: TLabel;
    Label4: TLabel;
    txtPageTotal: TEdit;
    txtPageAvail: TEdit;
    GroupBox4: TGroupBox;
    Label5: TLabel;
    Label6: TLabel;
    txtVirtualTotal: TEdit;
    txtVirtualAvail: TEdit;
    Timer1: TTimer;
    lblMemUsage: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure LoadMemoryInfo();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Процедура заполняет текстовые поля формы информацией
//об использовании памяти
procedure TForm1.LoadMemoryInfo();
var
  memStat: TMemoryStatus;
begin
  memStat.dwLength := SizeOf(memStat);
  //Получение инфомации о загрузке памяти
  GlobalMemoryStatus(memStat);
  //Заполнение полей формы
  //..% использования памяти
  pbMemUsage.Position := memStat.dwMemoryLoad;
  lblMemUsage.Caption := IntToStr(memStat.dwMemoryLoad) + '%';
  //..использование оперативной памяти
  txtMemTotal.Text := IntToStr(memStat.dwTotalPhys div 1024);
  txtMemAvail.Text := InttoStr(memStat.dwAvailPhys div 1024);
  //..использование файла подкачки
  txtPageTotal.Text := IntToStr(memStat.dwTotalPageFile div 1024);
  txtPageAvail.Text := InttoStr(memStat.dwAvailPageFile div 1024);
  //..использование виртуальной памяти
  txtVirtualTotal.Text := IntToStr(memStat.dwTotalVirtual div 1024);
  txtVirtualAvail.Text := InttoStr(memStat.dwAvailVirtual div 1024);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //Обновим показания загрузки памяти
  LoadMemoryInfo();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadMemoryInfo();
end;

end.
