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, чтобы увеличивать их на числовое значение.
Я думаю, что это означает, что это позволяет вам делать C как указатель математики. До Delphi 2009 вы могли выполнять только ограниченную математику указателей на типизированных указателях.