|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ОЗУ >2 гб и WinApi
Вот, как, действительно, узнать весь обьем установленной оперативной памяти средствами 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; |
#2
|
|||
|
|||
GlobalMemoryStatusEx
|
Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
YVitaliy (02.03.2012)
|
#3
|
||||
|
||||
Спасибо. Просто я пользуюсь Delphi7, там таковой процедуры не имеется. Придется в этом случае работать на XE А жаль. Привык к Борланду.
|
#4
|
||||
|
||||
ну так объяви ее сам:
Код:
type TMemoryStatusEx = record dwLength: DWORD; dwMemoryLoad: DWORD; ullTotalPhys: Int64; ullAvailPhys: Int64; ullTotalPageFile: Int64; ullAvailPageFile: Int64; ullTotalVirtual: Int64; ullAvailVirtual: Int64; ullAvailExtendedVirtual: Int64; end; function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean; stdcall; external kernel32; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
YVitaliy (02.03.2012)
|
#5
|
||||
|
||||
Цитата:
|