Delphi et pointermath (bug possible dans la documentation)
Question
Je parcourais le guide des langues de Delphi 2009. Et trouvé quelque chose d'étrange. Dans la liste des directives (et non des directives de compilation), j'ai trouvé pointermath .
RAD-Studio
Reference
Delphi Reference
Delphi Language Guide
Fundamental Syntactic Elements
Fundamental Syntactic Elements
[Directives]
Je sais que c'est une directive de compilation {$ POINTERMATH ON | OFF} mais je ne savais pas comment utiliser ce type. Il n’ya pas d’informations supplémentaires dans l’aide, j’ai donc essayé un petit quelque chose mais sans succès.
procedure Name; pointermath; // gave an error
Il existe donc plusieurs possibilités:
- il n'est pas encore implémenté.
- c'est un bug dans l'aide.
- Je n'ai pas encore trouvé le bon endroit pour l'utiliser.
Je suppose que c'est un bug (il y a plus de séléctionnés doivent être scellés ).
Quelqu'un sait-il quelque chose à propos de cette directive?
La solution
Sauf si Barry Kelly nous prouve le contraire (il est l'autorité en la matière), je voterais pour une documentation. bug: il était destiné au chapitre "Directives du compilateur ".
Autres conseils
Pointermath vous permet de faire des choses comme ceci:
{$POINTERMATH ON}
procedure Test;
var
temp: PWord;
begin
temp := anAddress;
temp := temp + 16;
// temp now points to anAddress+$20 (2*16)
end;
Sans pointeur, vous obtenez: [Erreur DCC] unit.pas (135): Opérateur E2015 non applicable à ce type d'opérande
En substance, cela signifie que vous n’avez plus besoin de transtyper les pointeurs sur Integer pour les incrémenter d’une valeur numérique.
Codegear a confirmé qu'il s'agissait d'un bogue.
Je pense que cela signifie que cela vous permet de faire du C comme des maths au pointeur. Jusqu'en Delphi 2009, vous ne pouviez utiliser que des mathématiques de pointeur limitées sur les pointeurs typés.