Delphi и pointermath (возможная ошибка в документации)

Я просматривал руководство по языку Delphi 2009. И нашел что-то странное. В списке директив (не директив компилятора) я нашел pointermath.

RAD-Studio
  Reference
    Delphi Reference
      Delphi Language Guide
        Fundamental Syntactic Elements
          Fundamental Syntactic Elements
            [Directives]

Я знаю, что это директива компилятора {$POINTERMATH ON|OFF}, но я не знал, как использовать этого парня. В справке нет дополнительной информации, поэтому я попробовал кое-что, но безуспешно.

procedure Name; pointermath; // gave an error

Итак, есть несколько возможностей:

  • это еще не реализовано.
  • это ошибка в помощи.
  • Я не нашел подходящего места для его использования.

Я предполагаю, что это ошибка, (есть больше Seled должны быть запечатаны).

Кто-нибудь знает что-нибудь об этой директиве?

4 ответа

Решение

Если Barry Kelly докажет, что мы неправы (он является авторитетом в этом), я бы проголосовал за ошибку документации: она предназначалась для главы "Директивыкомпилятора ".

Pointermath позволяет вам делать такие вещи:

{$POINTERMATH ON}
procedure Test;
var
  temp: PWord;
begin
  temp := anAddress;
  temp := temp + 16;
  // temp now points to anAddress+$20 (2*16)
end;

Без указателя вы получите: [DCC Error] unit.pas(135): E2015 Оператор не применим к этому типу операнда

По сути, это означает, что вам больше не нужно указывать указатели на Integer, чтобы увеличивать их на числовое значение.

Codegear подтвердил, что это ошибка.

Я думаю, что это означает, что это позволяет вам делать C как указатель математики. До Delphi 2009 вы могли выполнять только ограниченную математику указателей на типизированных указателях.

Другие вопросы по тегам