![]() |
uses-Klausel
Hallo Freunde,
ich habe mal wieder eine simple Frage: Ich möchte ein in einer anderen Unit(UParameters) definierten Aufzählungstyp in eine Unit einbinden, dies mit der uses-Klausel:
Delphi-Quellcode:
Leider erkennt die Funktion "Toperator" nicht an. Was habe ich (simples) falsch gemacht?
interface
uses UParameters; // wandelt einen Operator vom Typ TOperator in seine Stringdarstellung um function opToString(op:TOperator):string; Vielen Dank |
AW: uses-Klausel
Das sieht eigentlich gut aus, allerdings kann man das erst abschließend sagen, wenn man die Unit UParameters sieht.
|
AW: uses-Klausel
unit UParameters;
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); |
AW: uses-Klausel
Delphi-Quellcode:
TFrmSettings.TOperator
|
AW: uses-Klausel
au! Natürlich
THX |
AW: uses-Klausel
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:
Ein simples "end;" würde daraus einen Unit-weiten Type machen:
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);
Delphi-Quellcode:
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:
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);
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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