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...