Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Увеличение значения указателя

Автор: Григорий Ситнин
WEB-сайт: http://delphibase.endimus.com

{ **** 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.
Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.