Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Nutzung von Routinen / Fehler E2016 bei Array

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

...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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