https://docwiki.embarcadero.com/RADS...r_Math_(Delphi)
Ohhh, es ist wohl doch standardmäßig aus.
Und ich hätte eine Option z.B. in Projektoptionen > Erzeugen > Delphi-Compiler > Compilieren erwartet (die standardmäßig True wäre) ... aber nö.
Dachte ist an, weil es bei mir meistens geht (mit Inc), ohne dass ich es anschalten mußte.
Und es
IMHO doch keinen Unterschied zwischen
Inc(P, 4);
und
P := P + 4;
gibt.
Delphi-Quellcode:
{$POINTERMATH ON} // Fehler wenn OFF
procedure TForm1.FormCreate(Sender: TObject);
var
P: PInteger;
R: PRect;
begin
P := nil;
R := nil;
Inc(P); // entspricht P[1] bzw. Inc(P, 4) für P[4]
Inc(R);
// [DCC Fehler] E2015 Operator ist auf diesen Operandentyp nicht anwendbar
P := P + 4; // entspricht Inc(P, 4) also P[1+4]
R := R + 4;
// [DCC Fehler] E2016 Array-Typ erforderlich <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if P[3] = 0 then ; // entspricht P[1+4+3]
if R[3].Left = 0 then ;
end;
Bis Delphi XE zurück ist es Default OFF,
aber hätte sein können, dass es ganz früher (z.B. Delphi 7) mal ON war.
Aber wenn ich jetzt danach suche ...
https://github.com/superflexible/TGP...ntMainForm.pas
Delphi-Quellcode:
unit VCLClientMainForm;
interface
{$POINTERMATH ON}
...