Zitat von
mjustin:
Nja, es gibt auch Beispiele, wo soeine
Unit dennoch nicht nötig ist.
Hier hat man z.B. einen Initialization-Block, aber ohne Verwendung von NutzeObjekt wäre das Objekt nicht nötig und die ganze
Unit könnte entfallen.
Delphi-Quellcode:
unit MyUnit;
interface
function NutzeObjekt:
String;
implementation
var Objekt: TStrings;
function NutzeObjekt:
String;
begin
Result := Objekt.Text;
end;
procedure ErstelleObjekt;
begin
Objekt := TStringList.Create;
Objekt.Text := Irgendwas;
end;
procedure LöscheObjekt;
begin
Objekt.Free;
end;
initialization
ErstelleObjekt;
finalization
LöscheObjekt;
end.
Bei sowas würde mir ein Sprachkonstrukt gefallen, wo man sagen könnte wann etwas einkompiliert(gelinkt werden soll.
z.B.:
Delphi-Quellcode:
initialization
{$IFUSED 'NutzeObjekt'}
ErstelleObjekt;
{$ENDIF}
finalization
{$IFUSED 'NutzeObjekt'}
LöscheObjekt;
{$ENDIF}
end.
Somit könnte der Compiler/Linker erkennen daß nichts in Initialization und Finalization gemacht wird und würde somit nicht einbinden müssen, bzw. nur eine leere
Unit, welche er ja eh wegläßt.