AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Träume, Wünsche und Wahnvorstellungen...
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von himitsu · begonnen am 16. Mai 2011 · letzter Beitrag vom 3. Jun 2013
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.052 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

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

  Alt 4. Jul 2012, 08:13
- "Schlauer-Compiler" : Wenn man eine Unit einbindet, und verwendet von ihr nur eine Klasse oder Prozedur erkennt das der Compiler und "packt" nur diese Prozedur in die Exe. Und nicht alle Funktionen, Klassen etc. die man sowieso nicht verwendet. Da würde das Kompilieren länger dauern aber man hätte ne kleinere Exe. Besonders bei VCL wäre das hilfreich. Dan wären VCL-Anwendungen nicht so groß
Gibt's schon, nennt sich Linker und funktioniert schon seit über einer Dekade.

Teste es selbst: Schreib dir eine Funktion oder eine Klasse und benutze sie nicht in deinem Programm. Kompiliere das Programm (mit Debug Config). Schaue auf die blauen Pünktchen am linken Rand. Keine Pünktchen in den unbenutzten Teilen, weil der Linker das nicht reingepackt hat. Natürlich kann der nur rauswerfen, was wirklich nie benutzt wird, bzw was er feststellen kann. Daher werden z.B. keine öffentlichen Methoden rausgeworfen, weil die über RTTI angesprochen werden können.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 4. Jul 2012, 10: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;
Ein Therapeut entspricht 1024 Gigapeut.

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz