Initialize, процедура

Синтаксис


procedure Initialize(var Value);
procedure Initialize(var value; Count: Integer);

Описание

Процедура Initialize очищает строки, динамические массивы, интерфейсы и значения типа Variant. Аргумент Value может быть одиночной переменной, а также записью или массивом, содержащим строки, динамические массивы, интерфейсы или Variant.
Если требуется проинициализировать более одного элемента массива, передайте количество элементов массива в параметре Count. Count - это количество элементов массива, а не количество освобождаемых байтов памяти.
Initialize не является настоящей процедурой.

Ошибки

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

  • Процедура New вызывает Initialize автоматически, поэтому вызывать последнюю явным образом необходимо только при использовании GetMem.
  • Первый аргумент Initialize - это не указатель, а переменная или разыменованный указатель.
  • Процедура Initialize должна "знать" тип буфера, а следовательно - размер массива и структуру записи. В случае преобразования типа нетипизированного указателя используйте корректный тип. Преобразование типов указателей - обычный источник труднообнаруживаемых ошибок.

Пример


type
  TSample = record
    Str: string;
    List: array of Integer;
    Intf: lUnknown;
    V: Variant;
  end;
  // Tun TSampleArray объявляется с максимально возможным размером. 
  // На этапе выполнения программа выделяет память для необходимого
  // количества элементов. Это обычные действия для программ, которым
  // требуется обращаться к функциям Windows API или другим программам
  //С и C++, "не знающим" о динамических массивах Delphi.
  TSampleArray = array[0..Maxlnt div SizeOf(TSample)-1] of TSample;
  PSampleArray = ^TSampleArray;

// Уничтожение массива TSample
// рассмотрено в описании процедуры Finalize.
furction AllocateSamples(Count: Integer): PSampleArray;
begin
  GetMem(Result, Count * SizeOf(TSample));
  Initiallze(Result^, Count);
end;

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

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




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



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