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
Dispose Dispose of storage used by a pointer type variable
FillChar Fills out a section of storage with a fill character or byte value
FreeMem Free memory storage used by a variable
New Create a new pointer type variable
ReallocMem Reallocate an existing block of storage
 Author links

 Buy Website Traffic at
 Buywebsitetrafficexperts.com

 Buy Proxies at
 Buyproxies.io
 
 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 2002 - 2016. All rights reserved.  |  Home Page