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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top