DelphiBasics
GetMem
Function
Get a specified number of storage bytes System unit
 function GetMem(var StoragePointer Pointer; StorageSize Integer);
Description
The GetMem procedure attempts to get the specified StorageSize bytes of storage, storing a pointer to the storage in StoragePointer.
 
If the allocation fails, then a EOutOfMemory exception is raised.
 
The storage is not initialised in any way.
Notes
The GetMem procedure is Thread safe as long as IsMultiThread is true.

It is better to use New to allocate storage for records - the example is for illustration of GetMem and pointer manipulation.
Related commands
DisposeDispose of storage used by a pointer type variable
FillCharFills out a section of storage with a fill character or byte value
FreeMemFree memory storage used by a variable
NewCreate a new pointer type variable
ReallocMemReallocate an existing block of storage
 Download this web site as a Windows program.




 
Example code : Get storage for 3 records and use this storage
type
  TRecord = Record
    name : string[10];
    age  : Byte;
  end;

var
  recPointer : ^TRecord;

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

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

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

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

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