AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

uses-Klausel

Ein Thema von Mojito · begonnen am 29. Okt 2012 · letzter Beitrag vom 30. Okt 2012
Antwort Antwort
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#1

uses-Klausel

  Alt 29. Okt 2012, 22:05
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:
interface

uses UParameters;

// wandelt einen Operator vom Typ TOperator in seine Stringdarstellung um
function opToString(op:TOperator):string;
Leider erkennt die Funktion "Toperator" nicht an. Was habe ich (simples) falsch gemacht?
Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: uses-Klausel

  Alt 29. Okt 2012, 22:10
Das sieht eigentlich gut aus, allerdings kann man das erst abschließend sagen, wenn man die Unit UParameters sieht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#3

AW: uses-Klausel

  Alt 29. Okt 2012, 22:13
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);
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: uses-Klausel

  Alt 29. Okt 2012, 22:16
TFrmSettings.TOperator
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#5

AW: uses-Klausel

  Alt 29. Okt 2012, 22:18
au! Natürlich
THX
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz