Вот, как, действительно, узнать весь обьем установленной оперативной памяти средствами WinApi? Процедура GlobalMemoryStatus() корректно работает только при ОЗУ<2048 мб, а сейчас таких компов малость осталось.
Есть какие-нибудь методы? Ну, в крайнем случае через реестр, но не через какую-то библиотеку. Или мож я в эту процедуру неверные параметры передаю:
Код:
procedure fmemuse.calc;
var lpMemoryStatus : TMemoryStatus;
value1,value2:integer;
begin
inherited;
if not ready then exit;
lpMemoryStatus.dwLength := SizeOf(TMemoryStatus);
GlobalMemoryStatus(lpMemoryStatus);
value2:=lpMemoryStatus.dwTotalPhys div 1048576;
value1:=value2-round((lpMemoryStatus.dwAvailPhys/1024)/1024);
graph.Update(value1);
uselabel.text:=inttostr(value1)+'/'+inttostr(value2);;
end;