Delphi-Help

Главная Статьи Память и Указатели Увеличение значения указателя

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

Оцените материал
(0 голосов)


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

Конвертирует указатель в Cardinal, увеличиваем значение адреса, и конвертирует обратно в указатель, который и возвращает. Внимание, функция не выделяет никаких блоков памяти, она просто работает с указателем.

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.
Прочитано 5098 раз

Авторизация



Счетчики