2009-01-20 8 views
-2

Je lisais le guide de langue Delphi 2009. Et trouvé quelque chose d'étrange. Dans la liste des directives (pas les directives du compilateur) j'ai trouvé pointermath.Delphi et pointermath (bug possible dans la documentation)

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'y a pas d'informations supplémentaires dans l'aide, j'ai donc essayé quelque chose mais sans succès.

procedure Name; pointermath; // gave an error 

Alors il y a plusieurs possibilités:

  • il n'a pas encore été mis en œuvre.
  • c'est un bug dans l'aide.
  • Je n'ai pas encore trouvé le bon endroit pour l'utiliser.

Je suppose qu'il est un bug, (il y a plus Séled doit être scellé ).

Quelqu'un sait-il quelque chose à propos de cette directive?

Répondre

2

À moins Barry Kelly nous donne tort (il est l'autorité que), je voterais pour un bug de la documentation: il a été conçu pour le « compilateur directives » chapitre.

+0

Codegear confirmé cela. –

0

Je pense que cela signifie que cela vous permet de faire des maths de pointeur comme C. Jusqu'à Delphi 2009, vous ne pouviez faire que des maths pointeurs limités sur les pointeurs typés.

2

POINTERMATH vous permet de faire des trucs comme ça:

{$POINTERMATH ON} 
procedure Test; 
var 
    temp: PWord; 
begin 
    temp := anAddress; 
    temp := temp + 16; 
    // temp now points to anAddress+$20 (2*16) 
end; 

Sans POINTERMATH sur vous obtenez: [Erreur DCC] unit.pas (135): E2015 Opérateur non applicable à ce type d'opérande

Dans Essentiellement, cela signifie que vous n'avez plus besoin de typer les pointeurs sur Integer pour les incrémenter d'une valeur numérique.

+1

Vous avez mal lu la question - Gamecat explicitement mentionné "Dans la liste des directives (** pas de directives de compilation **) –

1

Codegear a confirmé l'existence de ce bug.