New, процедура

Синтаксис


procedure New(var P:  Тип указателя);
procedure New(var P: ^object; Constructor);

Описание

Процедура New выделяет память для новой переменной типа "указатель" или для "старого" объекта. Чаще всего эта процедура служит для установки в переменной-указателе ссылки на динамически выделенную память. New вызывает процедуру GetMem для выделения памяти и затем процедуру Initialize для инициализации строк, динамических массивов, интерфейсов или значений типа Variant, сформированных в этой памяти. Заметьте, что поля других типов, например, скаляры, статические массивы и короткие строки, не инициализируются.
Кроме того, с помощью процедуры New можно создать "старый" объект. Первый параметр - это переменная-указатель, необязательный второй параметр - имя конструктора и его необязательные параметры. Delphi вызывает конструктор, выделяет память для объекта, инициализирует новый участок памяти нулями и устанавливает указатель на выделенную память. New не является настоящей процедурой.

Ошибки

Советы и приемы

  • В отличие от стандартного Паскаля, Delphi Pascal создает записи с вариантами с помощью обычного вызова процедуры New. Значения-вариантных меток указывать не нужно. New всегда выделяет максимальный объем памяти, необходимый для всех комбинаций вариантных меток.
  • Чтобы выделить память для массива переменного размера, применяйте GetMem, а для создании одиночной записи или массива фиксированного размера - New.

Пример


type
  PEmployee = ^TEmployee;
  TEmployee = record
    Name:  string;
    TIN:  string[9];
    Salary:  Currency;
  end;
var
  E : PEmployee;
begin
  New(E);
  try
    E.Salary  := 0;  // До установки фактического значения
                     // инициализируем нулем.
    AbuseByPointyHairBoss(E);
  finally
    Dispose(E);
  end;
end;

Смотрите также

Процедуры Dispose, GetMem, Initialize.
    Учебник по языку Pascal          Лабораторные работы по программированию          Справочник




Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот:  
Ваш комментарий: