Registriert seit: 23. Jan 2008
3.686 Beiträge
Delphi 2007 Enterprise
|
AW: uses-Klausel
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)
|