Delphi y pointermath (posible error en la documentación)
Pregunta
Estaba navegando por la guía de idiomas de Delphi 2009. Y encontré algo extraño. En la lista de directivas (no directivas del compilador) encontré pointermath .
RAD-Studio
Reference
Delphi Reference
Delphi Language Guide
Fundamental Syntactic Elements
Fundamental Syntactic Elements
[Directives]
Sé que es una directiva del compilador {$ POINTERMATH ON | OFF} pero no sabía cómo usar a este tipo. No hay información adicional en la Ayuda, así que probé algo pero sin éxito.
procedure Name; pointermath; // gave an error
Entonces hay varias posibilidades:
- aún no está implementado.
- es un error en la ayuda.
- No he encontrado el lugar correcto para usarlo todavía.
Supongo que es un error, (hay más sellados deben estar sellados ).
¿Alguien sabe algo sobre esta directiva?
Solución
A menos que Barry Kelly demuestre que estamos equivocados (él es la autoridad en eso), votaría por una documentación error: estaba destinado al capítulo ' compilador directivas'.
Otros consejos
Pointermath te permite hacer cosas como esta:
{$POINTERMATH ON}
procedure Test;
var
temp: PWord;
begin
temp := anAddress;
temp := temp + 16;
// temp now points to anAddress+$20 (2*16)
end;
Sin puntero matemático, obtienes: [Error DCC] unit.pas (135): E2015 Operador no aplicable a este tipo de operando
En esencia, esto significa que ya no tiene que escribir punteros en Integer para incrementarlos en un valor numérico.
Codegear ha confirmado que es un error.
Creo que lo que significa es que te permite hacer C como matemáticas de puntero. Hasta Delphi 2009, solo podía hacer cálculos de puntero limitados en punteros escritos.