Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Delphi, pointers.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
hadrov
Из хелпа Дельфи:

Код
Character-pointer operators
Operator    Operation    Operand types    Result type    Example
+    pointer addition    character pointer, integer    character pointer    P + I
...

You can use the + and - operators to increment and decrement the offset of a character pointer. You can also use - to calculate the difference between the offsets of two character pointers. The following rules apply.

If I is an integer and P is a character pointer, then P + I adds I to the address given by P; that is, it returns a pointer to the address I
characters after P.


Делаю инкремент указателя через inc() - все нормально, а вот если просто прибавлять смещение к указателю ругается "[Error]...: Operator not applicable to this operand type".

Проверяю на таком примере:
Код
    p   : ^char;
    str : string[5];

begin
    str := 'abc';
    p := @str;
    p := p + 1; // <--


Как заставить указатель указывать на другое место в памяти используя смещение?
plombir
Используйте PChar.
Код
var
    p : PChar;
    str : string[50];
begin
    str := 'abcdefghigklmnoprstu';
    p := @str;
    p := p + 9; // <--
    ShowMessage(p^);
hadrov
Забыл, что для inc() есть второй параметр, т.е.
Код
var
    p   : ^byte;
    arr : array[1..5] of byte;

begin
    // init arr
    // ...

    p := @arr;
    inc(p, 2);
    ShowMessage(IntToStr(p^)); // покажет трейтий элемент arr


2plombir
Спасибо, натолкнули на мысль:
pchar(p) := pchar(p) + 2;

Жаль, нельзя просто прибавить оффсет, как в Си. sad.gif
DSIoffe
Я вот так делал:
var p: pointer;
.....
p := pointer(longint(p)+1);

Разбирайтесь скорее, а то набегут сишники и станут требовать всё бросить и уйти на С...
hadrov
Да, с pointer красивей, чем приведение типа слева от присваивания - pchar(p) := pchar(p) + 2;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.