Форум: "Основная";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
ВнизКак получить размер оперативки компа? Найти похожие ветки
← →
TStas © (2008-02-04 22:00) [0]Надо это вот зачем. Есть приложение, которому реально нужно дохрена памяти. Понятно, что бесконечно все равно не получится. А от использования файла подкачки начнет тормозить, притом сильно. Вот, если используемая память заведомо меньше оперативки, тогда подкачка будет использоваться редко, если вообще будет. А для этого ее надо как-то получить.
← →
TStas © (2008-02-04 22:45) [1]Вопрос снят. Вот так:
Procedure GetMemSize(out TotalSize, AvailSize: Integer);
Procedure GetMemSize(out TotalSize, AvailSize: Integer);
var
Status: _MEMORYSTATUS;
begin
GlobalMemoryStatus(Status);
TotalSize := Status.dwTotalPhys;
AvailSize := Status.dwAvailPhys;
end;
Function TotalByteSize: Integer; //Размер в байтах
var
X: Integer;
begin
GetMemSize(Result, X);
end;
Только я не совсем понял, что подразумевается под доступной памятью, но заметил, что её объем меняется.
← →
хам (2008-02-04 22:48) [2]
VOID GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer // pointer to the memory status structure
);
Parameters
lpBuffer
Points to a MEMORYSTATUS structure in which information about current memory availability is returned. Before calling this function, the calling process should set the dwLength member of this structure.
← →
Loginov Dmitry © (2008-02-06 00:13) [3]Используй такую функцию:
function AvailMemory: Double;
var
MemInfo: TMemoryStatus;
begin
MemInfo.dwLength := Sizeof(MemInfo);
GlobalMemoryStatus(MemInfo);
Result := Min(MemInfo.dwAvailPhys +
Int64(MemInfo.dwAvailPageFile), Int64(MemInfo.dwAvailVirtual));
end;
← →
Loginov Dmitry © (2008-02-06 00:16) [4]Но это ни в коем случае не страхует от EOutOfMemory, если ты попытаешься выделить очень большой непрерывный блок памяти.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c