Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Compiler findet gelegentlich klassenlokal definierte Typen nicht

  Alt 23. Aug 2018, 08:31
Moin!

Mir passiert es immer wieder, dass bei einem einfachen Compilerlauf (STRG-F9) klassenlokal definierte Typen nicht gefunden werden:
Delphi-Quellcode:
unit A;

interface

uses
  System.Classes;

type
  TMyClass = class(Object)
  public type
    TMyEnum = (enA, enB, enC);
  end;

{...}

unit B;

interface

{...}

implementation

uses
  A;

procedure Produce;
var
  LEnum = TMyClass.TMyEnum; // <-- E2003 Undeklarierter Bezeichner: 'TMyClass.TMyEnum'
  LEnum2 = TMyEnum; // <-- E2003 Undeklarierter Bezeichner: 'TMyEnum'
begin
  {...}
end;
Das Problem tritt frustrierenderweise nur sporadisch auf. Dagegen hilft nur, entweder ein Fullbuild oder vor dem Compilieren die DCUs zu löschen. Das ist insofern etwas lästig, weil es sich um ein Package-Projekt handelt, das ich dann jedesmal deinstallieren muss, Delphi schließen und wieder auf, kompilieren, installieren, nochmal schließen und wieder auf.

Wenn ich die Deklaration von TMyEnum aus der Klasse heraus nehme und in eine separate Unit verlege, tritt das Problem nicht auf. Allerdings wäre das der Ordnung und Übersichtlichkeit halber nur die B-Lösung.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat