Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#9

AW: ExtLib lässt sich nicht installieren

  Alt 26. Nov 2023, 17:29
Dank der Benutzung von with weiß der Compiler nicht genau, welches SizeOf er benutzen soll und entscheidet sich "zufällig" für das falsche SizeOf.
Nein, der Compiler weiß genau, welches SizeOf er benutzen soll: Das, was im kleinsten Scope ist, also:
  1. Methode aus dem mit with angegebenen Typ
  2. Unter-Funktion der aktuellen Methode
  3. Methode der aktuellen Klasse (+ ggf. Class Helper)
  4. Funktion aus aktueller Unit
  5. Funktion aus eingebundenen Units von hinten nach vorne
  6. System.SizeOf
(Wobei das noch komplizierter wird, wenn es mehrere Overloads gibt.)

Selbst ohne das with ist Zahl der Möglichkeiten also ziemlich groß.

/Klugscheißer

Einfachster Bugfix ist übrigens:
  cbSize := System.SizeOf(LNID);
Damit ist dem Compiler die Wahlmöglichkeit genommen.
Er weiß aus Compilersicht, welches SizeOf er benutzen soll, er weiß aber nicht aus Programmierersicht, welches SizeOf dieser meint, dass es vom Compiler benutzt werden müsste

Compilierelogik und Erwartungshaltung führen nicht zwingend zum gleichen Ergebnis
  Mit Zitat antworten Zitat