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

StackOverflow https://stackoverflow.com/questions/460857

  •  19-08-2019
  •  | 
  •  

Вопрос

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

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

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

procedure Name; pointermath; // gave an error

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

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

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

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

Это было полезно?

Решение

Если не Барри Келли доказывает, что мы неправы (он является авторитетом в этом), я бы проголосовал за ошибку в документации:это было предназначено для 'компилятор глава директив.

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top