Delphi e pointermath (possibile bug nella documentazione)
Domanda
Stavo sfogliando la guida linguistica di Delphi 2009. E ho trovato qualcosa di strano. Nell'elenco delle direttive (non direttive del compilatore) ho trovato pointermath .
RAD-Studio
Reference
Delphi Reference
Delphi Language Guide
Fundamental Syntactic Elements
Fundamental Syntactic Elements
[Directives]
So che è una direttiva del compilatore {$ POINTERMATH ON | OFF} ma non sapevo come usare questo ragazzo. Non ci sono informazioni aggiuntive nella Guida, quindi ho provato qualcosa ma senza successo.
procedure Name; pointermath; // gave an error
Quindi ci sono diverse possibilità:
- non è ancora implementato.
- è un bug nella guida.
- Non ho ancora trovato il posto giusto per usarlo.
Presumo sia un bug, (ci sono più selezionati devono essere sigillati ).
Qualcuno sa qualcosa di questa direttiva?
Soluzione
A meno che Barry Kelly ci dimostri che non ha ragione (è lui l'autorità), voterei per una documentazione bug: era destinato al capitolo " compilatore direttive".
Altri suggerimenti
Pointermath ti consente di fare cose del genere:
{$POINTERMATH ON}
procedure Test;
var
temp: PWord;
begin
temp := anAddress;
temp := temp + 16;
// temp now points to anAddress+$20 (2*16)
end;
Senza puntatore si ottiene: [Errore DCC] unit.pas (135): E2015 Operatore non applicabile a questo tipo di operando
In sostanza, ciò significa che non è più necessario digitare i puntatori in Intero per incrementarli di un valore numerico.
Codegear ha confermato che si tratta di un bug.
Penso che ciò significhi che ti permette di fare C come la matematica dei puntatori. Fino a Delphi 2009, si potevano fare solo calcoli con puntatori limitati su puntatori digitati.