Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#234

AW: Träume, Wünsche und Wahnvorstellungen...

  Alt 4. Jul 2012, 11:53
Das Problem ist/war, wenn man diese Klasse über den Initialization-Abschnitt initialisiert, dann wird sie immer "verwendet" (in Initialization), selbst wenn sie sonst nirgendwo verwendet wird.

Darum ist die VCL auch so groß, bzw. einige gehn auf NonVCL und verwenden bestimmte Units garnicht, damit die EXE klein wird.

Aber: Es gibt seit einer Weile den class constructor , bzw. class destructor ... wenn alle dort das machen würde, was sie sonst in "Initialization" machen würden, dann würde vieles wirklich nicht mehr eingebunden, wenn es nicht gebraucht wird.

Was da leider noch fehlt, ist, daß man bei Ressourcen nicht differenzieren kann und es wird immer alles in die EXE gelinkt, was irgendwo im Quellcode gefunden wird, selbst wenn z.B. die Klasse garnicht verwendet/eingelinkt wurde, für welche diese Resource (RES) gedacht war.


@jaenicke: Das Alte/Normale muß natürlich erhalten bleiben, aber wenn ich nur programmintern mehrere Interfaces brauche, dann muß ich auch immer alle Header/Implementationen doppelt schreiben.
In soeinem Fall wäre es eben schön, wenn man sich aus allen public/published-Eigenschaften ein Interface generieren lassen könnte
Delphi-Quellcode:
type
  TMyClass = class interfaced(TInterfaceObject) // dafür markieren, daß automatisch ein Interface generiert werden kann, bzw. es wird sofort generiert und später nur zugewiesen, beim OF
    ...
  end;
  IMyInterface = interface of TMyClass;


  IMyInterface2 = interface of TMyClass2;; // per Forward?
  TMyClass2 = class(TInterfaceObject)
    ...
  end;


  IMyInterface3 = interface of TMyClass3;; // per Forward und manuell
  TMyClass3 = class(TInterfaceObject, IMyInterface3)
    ...
  end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Jul 2012 um 12:01 Uhr)
  Mit Zitat antworten Zitat