Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  
Подписаться на рассылку:
Клуб программистов


Основы Delphi
GetMem
Функция
Получает указанное число байтов памяти. System unit
  function GetMem ( var StoragePointer : Pointer; StorageSize : Integer ) ;
Описание
Процедура GetMem пытается получить указанные в StorageSize байт памяти, сохраняя указатель на память в StoragePointer. Если при распределении произошли сбои, то вызывается исключение EOutOfMemory. Память не всегда инициализируется.
Примечания
Процедура GetMem потоко безопасна, пока IsMultiThread истинено. Для распределения памяти для записей лучше использовать New - пример используется для иллюстрации GetMem и манипуляции указателем.
Похожие команды
Dispose  Очищает память на которую указывает указатель

FillChar  Заполняет раздел памяти значением байта или символа-заполнителя

FreeMem  Освобождает память, используемую переменной

New  Создаёт новую переменную типа указатель

ReallocMem  Позволяет изменить размер существующего блока памяти

 
Пример кода : Получение памяти для 3-х записей, и использование этой памяти
type
  TRecord = Record
    name : string[10];
    age  : Byte;
  end;

var
  recPointer : ^TRecord;

begin
  // Распределение памяти для трех записей
  // Обратить внимание: для этого лучше использовать New
  // Он здесь используется только в целей иллюстрации
  GetMem(recPointer, 3 * SizeOf(TRecord));

  // Заполнение этих 3-х записей значениями
  recPointer.name := 'Brian';
  recPointer.age  := 23;

  Inc(recPointer);
  recPointer.name := 'Jim';
  recPointer.age  := 55;

  Inc(recPointer);
  recPointer.name := 'Sally';
  recPointer.age  := 38;

  // Теперь показываем эти значения
  Dec(recPointer, 2);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
  Inc(recPointer);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
  Inc(recPointer);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
end;
Brian - 23
Jim - 55
Sally - 38
 



© Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки  |     |  Английская версия