Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#2

Re: uses im implementation bzw. interface wann?

  Alt 22. Apr 2007, 10:33
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:
...

implementation

uses
  inifiles;

procedure TForm1.FormCreate(Sender: TObject);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create(...);
  try
    ...
  finally
    Ini.Free;
  end;
end;
Wenn du sie jedoch bereits im Interface-Abschnitt (für Typdeklarationen oder globale Variablen) benötigst, so muss sie dort hinter uses einfügen:

Delphi-Quellcode:
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;

...
Übrigens gibts da ein Tool (Bei Google suchenIcarus Uses List Analyzer), dass deine uses-Liste überprüft und die empfdehlungen ausgibt, ob du eine Unit überhaupt benötigst oder ob du sie nach implementation verschieben kannst...

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat