procedure ReallocMem ( var StoragePointer : Pointer; StorageSize : Integer ) ;
Delphi процедура ReallocMem изменяет размер памяти существующего блока хранения. Размер может быть меньшим или больше. Если меньше, тогда существующий размер памяти будет уменьшен на разность существующего размера к необходимому. Если больше, тогда размер памяти будет расширен. Или будет создан новый блок памяти, если это необходимо. В любом случае, блочные данные существующей памяти сохранены, и новая часть памяти инициализирована.
|
type TRecord = Record name : string[10]; age : Byte; end; var recPointer : ^TRecord; begin // Распределите память для 2 записей // Обратите внимание: для этого лучше использовать New // Здесь используется только в целях иллюстрации GetMem(recPointer, 2 * SizeOf(TRecord)); // Заполнение значениями этих 2-х записей recPointer.name := 'Brian'; recPointer.age := 23; Inc(recPointer); recPointer.name := 'Jim'; recPointer.age := 55; // Ууупс - забыли добавить Sally... Dec(recPointer); ReallocMem(recPointer, 3 * SizeOf(TRecord)); // Теперь добавляем 3-ю запись Inc(recPointer,2); 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;
|