Увеличение значения указателяDelphi , Синтаксис , Память и УказателиУвеличение значения указателя
Автор: Григорий Ситнин { **** 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. Функция IncPtr в Delphi конвертирует указатель в Cardinal, увеличивает значение адреса на заданное количество и затем обратно конвертирует в указатель, который возвращает. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Память и Указатели ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |