Reallocate an existing block of storage System unit
 procedure ReallocMem(var StoragePointer Pointer; StorageSize Integer);
The ReallocMem procedure changes the storage size of an existing block of storage.
The size may be smaller or bigger.
If smaller, then the existing storage is effectively truncated, the remainder being released.
If larger, the storage is extended. Or a new block is allocated if necessary. In either case, the existing storage block data is preserved, and the new part is unitialised.
Warning : use with caution - excessive use can fragment storage.
Related commands
DisposeDispose of storage used by a pointer type variable
FreeMemFree memory storage used by a variable
GetMemGet a specified number of storage bytes
NewCreate a new pointer type variable
 Download this web site as a Windows program.

Example code : Allocate using GetMem and then reallocate using ReallocMem
  TRecord = Record
    name : string[10];
    age  : Byte;

  recPointer : ^TRecord;

  // Allocate storage for 2 records
  // Note : It is better to use New for this
  // It is used here for illustration purposes only
  GetMem(recPointer, 2 * SizeOf(TRecord));

  // Fill out these 2 records with values := 'Brian';
  recPointer.age  := 23;

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

  // Whoops - forgot to add Sally ...
  ReallocMem(recPointer, 3 * SizeOf(TRecord));

  // Now add a third record
  Inc(recPointer,2); := 'Sally';
  recPointer.age  := 38;

  // Now display these values
  Dec(recPointer, 2);
  ShowMessageFmt('%s is %d',[, recPointer.age]);
  ShowMessageFmt('%s is %d',[, recPointer.age]);
  ShowMessageFmt('%s is %d',[, recPointer.age]);
Show full unit code
  Brian is 23
  Jim is 55
  Sally is 38
Delphi Programming © Neil Moffatt . All rights reserved.  |  Home Page