Thema: uses-Klausel

Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: uses-Klausel

  Alt 30. Okt 2012, 02:15
Um eine Hand voll mehr Erklärung zu liefern: Du hast dort einen Nested-Type gebaut, der nur innerhalb der Klasse, in der er definiert wurde bekannt ist. Richtig eingerückt müsste es also so aussehen:
Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls,
  Vcl.Samples.Spin, Vcl.ExtCtrls;

type
  TFrmSettings = class(TForm)
    GroupBox2: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    SpnEdtTaskNumber: TSpinEdit;
    RdGrpOperator: TRadioGroup;
    type
      TOperator = (opPlus, opMinus, opMultiply, opDivide);
Ein simples "end;" würde daraus einen Unit-weiten Type machen:
Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls,
  Vcl.Samples.Spin, Vcl.ExtCtrls;

type
  TFrmSettings = class(TForm)
    GroupBox2: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    SpnEdtTaskNumber: TSpinEdit;
    RdGrpOperator: TRadioGroup;
  end; // <- Deklaration von TFrmSettings beendet
type // <- Neue Types im Scope der gesamten Unit
  TOperator = (opPlus, opMinus, opMultiply, opDivide);
Da TOperator offenbar auch ausserhalb von TFrmSettings verwendet wird, wäre die 2. Variante sematisch besser. Noch besser wäre es - gerade wenn man TOperator Felder in dem Formular haben mag - TOperator vorher zu definieren. Zudem kann man sich das zweite "type" sparen, es können beliebig viele Deklarationen unter einem "type" folgen:
Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls,
  Vcl.Samples.Spin, Vcl.ExtCtrls;

type
  TOperator = (opPlus, opMinus, opMultiply, opDivide);

  TFrmSettings = class(TForm)
    GroupBox2: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    SpnEdtTaskNumber: TSpinEdit;
    RdGrpOperator: TRadioGroup;
  end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat