-
Начиная с 8-ой версии Delphi функция определения выделенной приложению памяти AllocMemSize НЕ поддерживается (выдаёт всегда нолик). :mad: У меня сейчас установлена Delphi XE. Что применить вместо AllocMemSize, например, чтобы вывести размер выделенной в данный момент памяти на форму?
-
Посмотрите в сторону GlobalMemoryStatus()
-
Посмотрел. Там в структуре типа _MEMORYSTATUS получаются поля, отображающее состояние ГЛОБАЛЬНОЙ памяти. Т.е. не понять, мой процесс её жрёт, или какой-то другой
-
Уфффф.... Сам разобрался. Вот такую несложную функцию написал
(результат - в КИЛОбайтах):
function MyGetAllocatedMemory: Cardinal;
var MemoryManagerState: TMemoryManagerState; K: Byte;
begin
GetMemoryManagerState(MemoryManagerState);
With MemoryManagerState do begin
Result :=
TotalAllocatedLargeBlockSize + TotalAllocatedMediumBlockSize;
For K := 0 to 54 do with SmallBlockTypeStates[K] do
Result := Result + UseableBlockSize +
InternalBlockSize + ReservedAddressSpace;
end;
Result := Result div 1024;
end;
-
> разобрался
Ну и где в этом коде хоть какое-то упоминание о "размере выделенной в данный момент памяти на форму" ?
Никакими "формами" в этом коде даже не пахнет.
-
Так задача была ОПРЕДЕЛИТЬ количество занятой данным приложением, написанном в среде Delphi XE, оперативной памяти. А вывести циферку на какой-либо компонент на форме - особых усилий не требует.
-
Фривольная манипуляция порядком слов в русскоязычном предложении может существенно и даже радикально изменить его смысловое содержание)
Обе трактовки
> вывести размер .. на форму
и
> размер .. памяти на форму
(почему бы не прочитать это как памяти, выделенной на хранение объекта-формы ?)
имеют право на жизнь)
А вот
> вывести на форму размер оперативной памяти, выделенной операционной системой в данный момент процессу приложения
как ни крути, а извратить смысл такой формулировки - это уже надо изрядно постараться)