Delphi и pointermath (возможная ошибка в документации)
Вопрос
Я просматривал руководство по языку 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 вы могли выполнять ограниченную математику указателей только на типизированных указателях.