Вот, как, действительно, узнать весь обьем установленной оперативной памяти средствами WinApi? Процедура GlobalMemoryStatus() корректно работает только при ОЗУ<2048 мб, а сейчас таких компов малость осталось.
Есть какие-нибудь методы? Ну, в крайнем случае через реестр, но не через какую-то библиотеку. Или мож я в эту процедуру неверные параметры передаю:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 ;
|