Увеличение значения указателя

Previous  Top  Next

    
 

 

Code:

{ **** UBPFD *********** by delphibase.endimus.com ****

>> Увеличение значения указателя

 

Конвертирует указатель в Cardinal, увеличиваем значение адреса,

и конвертирует обратно в указатель, который и возвращает.

Внимание, функция не выделяет никаких блоков памяти,

она просто работает с указателем.

 

Зависимости: System

Автор:       Григорий Ситнин, gregor@gregor.ru, Москва

Copyright:   Григорий Ситнин, 2003

Дата:        8 июля 2003 г.

***************************************************** }

 

function IncPtr(APointer: pointer; AHowMuch: cardinal = 1): pointer;

begin

//*** Конвертируем указатель в Cardinal, увеличиваем значение адреса,

//*** и конвертируем обратно в указатель, который и возвращаем.

//**! Внимание, функция не выделяет никаких блоков памяти,

//**! она просто работает с указателем.

Result := Ptr(cardinal(APointer) + AHowMuch);

end;

Пример использования:

 

{$APPTYPE CONSOLE}

program testptr;

uses SysUtils, uIncPtr; //*** Модуль uIncPtr содержит функцию IncPtr

var

ptr1, ptr2: pointer;

begin

ptr1 := AllocMem(255);

ptr2 := incptr(ptr1, 10);

writeln('ptr1 : ', cardinal(ptr1));

//*** Напечатать увеличенный на 10 указатель ptr1

writeln('ptr2 (+10): ', cardinal(ptr2));

FreeMem(ptr1, 255)

end.

 

©Drkb::00832