Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Gleichnamige Helfer-Klassen: Interface-Abschnitt hat Vorrang?

  Alt 2. Jul 2014, 10:44
Delphi-Version: XE5
Gegeben sei:

Delphi-Quellcode:
unit Unit1;

interface
   uses System.SysUtils; // Enthält ebenfalls einen TGUIDHelper
   procedure someProc(); forward;

   var myGUID: TGUID;

implementation
   uses Spring.Helpers;

   procedure someProc();
   begin
      if myGUID.IsEmpty then;
   end;

end.
Der TGUIDHelper aus Spring.Helpers hat eine Property IsEmpty , der aus System.SysUtils nicht. Die Code-Vervollständigung schlägt die Benutzung von IsEmpty vor. Beim Kompilieren aber wird gesagt
Code:
[dcc32 Fehler] Unit1.pas(15): E2003 Undeklarierter Bezeichner: 'IsEmpty'
[dcc32 Fataler Fehler] Project1.dpr(9): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Ich habe also zwei record helper for System.TGUID : Einmal den aus System.SysUtils und einmal aus, beispielhaft, Spring.Helpers . Ich hätte erwartet dass der aus Spring.Helpers genommen wird, da dieser im implementation -Abschnitt importiert wird. Anscheinend ist dem nicht so.

Ob das so gewollt ist?
Habe ich etwas an der Delphi-Philosophie falsch verstanden? Weil sonst haben doch eigentlich immer später importierte Units und immer "implementation nach Interface" Vorrang...
  Mit Zitat antworten Zitat