![]() |
uses im implementation bzw. interface wann?
Hallo zusammen,
wer erklärt einem Hobbyprogrammierer die richtige Verwendung bzw. den Unterschied der uses-Klausel im implementation bzw. im interface Teil einer Unit. Sprich wann verwende ich was... Bislang kenne ich nur den Fall, das man dadurch zwei Units gegenseitig nutzen kann. Aber ist das schon alles??? |
Re: uses im implementation bzw. interface wann?
Hi,
du solltest Units nur so nutzen, wie du sie benötigst. Brauchst du sie also nur im Implementation-Abschnitt, so solltest du sie dort deklarieren. Beispiel:
Delphi-Quellcode:
Wenn du sie jedoch bereits im Interface-Abschnitt (für Typdeklarationen oder globale Variablen) benötigst, so muss sie dort hinter uses einfügen:
...
implementation uses inifiles; procedure TForm1.FormCreate(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create(...); try ... finally Ini.Free; end; end;
Delphi-Quellcode:
Übrigens gibts da ein Tool (
unit MyGrasphic;
uses SysUtils, Graphics; type EMyGraphic = class(Exception); //Exception aus SysUtils TMyGraphic = class(TGraphic) //TGraphic aus Graphics ... public procedure foo; end; interface uses MyGraphicConsts; procedure TMyGraphic.Foo; begin raise EMyGraphic.CreateFmt(StrEMyGraphicFoo, ['bar']); //StrEMyGraphicsFoo aus MyGraphicConsts nur hier benötigtbenutzt end; ... ![]() Mfg FAlter |
Re: uses im implementation bzw. interface wann?
Hallo Felix,
aber wo ist denn nun der grundlegende Unterschied ob interface oder implementation. :gruebel: Rein theoretisch könnte ich doch alle Units immer im interface unterbringen oder wirkt sich das später auf Größe und/oder Performance der Anwendung aus, wenn ich sie grundsätzlich im implementation unterbringe??? :gruebel: |
Re: uses im implementation bzw. interface wann?
|
Re: uses im implementation bzw. interface wann?
Zitat:
Gruss Reinhard |
Re: uses im implementation bzw. interface wann?
Zitat:
![]() |
Re: uses im implementation bzw. interface wann?
Danke für Links und Antworten / Ausführungen
Somit ergibt sich: implementation und interface dienen "nur" der Aufhebung / Umgehung von zirkulären Bezügen, haben keine Auswirkung auf die Größe / Performance der Anwendung, dienen aber dem Programmierer zur Unterstützung bezüglich der Lesbarkeit des Quellcodes (und helfen somit Fehler zu vermeiden). (Schade, hatte insgeheim gehofft, das sich da noch mehr hinter verbirgt ...) |
Re: uses im implementation bzw. interface wann?
Zitat:
Gruss Reinhard |
Re: uses im implementation bzw. interface wann?
Ausserdem gibt es noch einen anderen Unterschied: Beim compilieren durchläuft der Compiler beim auflösen einer Unit primär erstmal die Uses Liste im Interface Abschnitt und geht die Units wiederrum durch. Desto mehr Units im Interfaceabschnitt stehen (wahrscheinlich sogar unnötig), dann parsed er diese auch unnötigerweise. Von daher ist es schon bei grossen Projekten (> 2 Millionen Codezeilen) beim Compilieren merklich zu spüren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 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