Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Nutzung von Routinen / Fehler E2016 bei Array

  Alt 3. Mai 2023, 17:31
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}

...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Mai 2023 um 17:34 Uhr)
  Mit Zitat antworten Zitat