Mega Code Archive

 
Categories / Delphi / Functions
 

Getmem - 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 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