メモリ容量を測定する
64 GetMemory 動作確認 Delphi2007 更新日 2008/01/31(木)

コンピュータに搭載されているメモリ容量の情報を取得します。

────────────────────
procedure TForm1.Button1Click(Sender: TObject);

    //数値を3桁区切りの文字列に変換する
    function FormatTreeComma(Value: Extended): String;
    begin
      Result := Format('%.0n', [Value]);
    end;  //小数点以下は表示しない桁指定

var
  MemoryStatus: TMemoryStatus;
begin
  MemoryStatus.dwLength := SizeOf(TMemoryStatus);
  GlobalMemoryStatus(MemoryStatus);

  with MemoryStatus, Memo1.Lines do
  begin
    Add('使用中のメモリの割合:'+#9+      FormatTreeComma(dwMemoryLoad));
    Add('物理メモリのバイト数:'+#9+      FormatTreeComma(dwTotalPhys));
    Add('空き物理メモリのバイト数:'+#9+  FormatTreeComma(dwAvailPhys));
    Add('ページングファイルのバイト数:'+#9+    FormatTreeComma(dwTotalPageFile));
    Add('ページングファイルの空きバイト数:'+#9+FormatTreeComma(dwAvailPageFile));
    Add('アドレス空間のユーザーバイト数:'+#9+  FormatTreeComma(dwTotalVirtual));
    Add('空きユーザーバイト数:'+#9+            FormatTreeComma(dwAvailVirtual));
  end;

end;
────────────────────
出力結果は以下のようになります。

昔のPC
    使用中のメモリの割合:              87
    物理メモリのバイト数:                100,192,256
    空き物理メモリのバイト数:             12,742,656
    ページングファイルのバイト数:      1,134,571,520
    ページングファイルの空きバイト数:    980,914,176
    アドレス空間のユーザーバイト数:    2,147,352,576
    空きユーザーバイト数:              2,118,160,384

今のPC
    使用中のメモリの割合:              71
    物理メモリのバイト数:              1,072,087,040
    空き物理メモリのバイト数:            308,809,728
    ページングファイルのバイト数:      2,555,219,968
    ページングファイルの空きバイト数:  1,823,838,208
    アドレス空間のユーザーバイト数:    2,147,352,576
    空きユーザーバイト数:              2,105,761,792

三桁区切りで表示してみました。


unit Windows; の宣言によると

  _MEMORYSTATUS = record
    dwLength: DWORD;
    dwMemoryLoad: DWORD;
    dwTotalPhys: DWORD;
    dwAvailPhys: DWORD;
    dwTotalPageFile: DWORD;
    dwAvailPageFile: DWORD;
    dwTotalVirtual: DWORD;
    dwAvailVirtual: DWORD;
  end;
  TMemoryStatus = _MEMORYSTATUS;

なので、値は
    DWORD = Longword    0..4294967295   符号なし 32 ビット
で取得されています。