Советы по Delphi

         

TOTALSYSTEMMEMORY


    Unit MemInfo;

Interface

Procedure
FreeMemory(Var lTotalMemory: LongInt; Var lFreeMemory: LongInt);

Implementation

Uses
WinTypes, WinProcs, ToolHelp;

Function Min(Number1, Number2 : LongInt) : LongInt;


{Возвращаем минимум из Number1 & Number2}
Begin
If
(Number1 <= Number2) Then Min := Number1 Else Min := Number2; End; {end Function, Min()}

Procedure FreeMemory(Var lTotalMemory: LongInt; Var lFreeMemory: LongInt);
{Вычисляем и возвращаем сумму полной и свободной памяти (Total & Free Memory) в байтах
(ie. divide each by 1024 of Kilobytes) NB: Total Memory будет равна 0, если windows запущена в стандартном режиме (Standard Mode), поскольку в этом случае Total Memory не может быть определена.} Var
lWinFlags : LongInt; mmiMemManInfo : TMemManInfo; Begin
{Инициализируем переменные} lTotalMemory := 0; lFreeMemory  := 0; lWinFlags    := GetWinFlags; If (0 <> (lWinFlags And WF_ENHANCED)) Then Begin {Инициализируем структуру MemManInfo} mmiMemManInfo.dwSize               := SizeOf(TMemManInfo); mmiMemManInfo.dwLargestFreeBlock   := 0; mmiMemManInfo.dwMaxPagesAvailable  := 0; mmiMemManInfo.dwMaxPagesLockable   := 0; mmiMemManInfo.dwTotalLinearSpace   := 0; mmiMemManInfo.dwTotalUnlockedPages := 0; mmiMemManInfo.dwFreePages          := 0; mmiMemManInfo.dwTotalPages         := 0; mmiMemManInfo.dwFreeLinearSpace    := 0; mmiMemManInfo.dwSwapFilePages      := 0; mmiMemManInfo.wPageSize            := 0; MemManInfo(@mmiMemManInfo);  {Получение информации менеджера памяти} {Вычисление Total Memory} lTotalMemory := (Min(mmiMemManInfo.dwTotalLinearSpace, mmiMemManInfo.dwTotalPages + mmiMemManInfo.dwSwapFilePages)
* mmiMemManInfo.wPageSize);
{Вычисляем Free Memory} lFreeMemory := GetFreeSpace(0); End Else Begin {Полная память = 0} lTotalMemory := 0; {Вычисляем Free Memory} lFreeMemory := GetFreeSpace(0); End; {end If-Then-Else} End; {End Procedure, TotalMemory()}

End. {Конец модуля, MemInfo}

[001983]



Содержание раздела