AGB  ·  Datenschutz  ·  Impressum  







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

Type Ableitung oder Parametereinschraenkung???

Ein Thema von DrTosh · begonnen am 23. Jun 2016 · letzter Beitrag vom 28. Jun 2016
Antwort Antwort
DrTosh

Registriert seit: 3. Dez 2015
7 Beiträge
 
#1

Type Ableitung oder Parametereinschraenkung???

  Alt 23. Jun 2016, 10:49
Delphi-Version: 5
TType = (TT1, TT2, TT3, TT4, TT5, TT6, TT7);
TTypeNormal = (TT1, TT2, TT3, TT4, TT5, TT6); // Teilmenge von TType
TTypeSpezial = (TT5, TT6, TT7); // Teilmenge von TType

TNormal = class(TObject)
public
FType: TType;
Constructor Create(lType: TType);// nur TTypeNormal zulaessig
end;
TSpezial = class(TNormal)
public
Constructor Create(lType: TType);// nur TTypeSpezial zulaessig
end;

Constructor TNormal.Create([TT1, TT2, TT3, TT4, TT5, TT6]);// nur TTypeNormal zulaessig

Constructor TSepzial.Create([TT5, TT6, TT7]);// nur TTypeSpezial zulaessig


Ich weiss, das der Code oben Syntaktisch falsch ist.
Er ist nur fuer die Darstellung, was ich erreichen moechte.
Ich habe einen Type und zwei Teilmengen von diesem.
In dem Constructor moechte ich aber immer nur die passenden Typen als Auswahlmoeglichkeit anbieten.
Gibt es eine Moeglichkeit, wie ich das realisieren kann?

MfG DrTosh
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Type Ableitung oder Parametereinschraenkung???

  Alt 23. Jun 2016, 11:33
So vielleicht?
Delphi-Quellcode:
type
  TType = (TT1, TT2, TT3, TT4, TT5, TT6, TT7);
  TTypeNormal = TT1 .. TT6; // Teilmenge von TType
  TTypeSpezial = TT5 .. TT7; // Teilmenge von TType

  TNormal = class(TObject)
  public
    FType: TType;
    Constructor Create(lType: TTypeNormal); // nur TTypeNormal zulaessig
  end;

  TSpezial = class(TNormal)
  public
    Constructor Create(lType: TTypeSpezial); // nur TTypeSpezial zulaessig
  end;

Constructor TNormal.Create(lType: TTypeNormal); // nur TTypeNormal zulaessig
begin

end;

Constructor TSpezial.Create(lType: TTypeSpezial); // nur TTypeSpezial zulaessig
begin

end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DrTosh

Registriert seit: 3. Dez 2015
7 Beiträge
 
#3

AW: Type Ableitung oder Parametereinschraenkung???

  Alt 28. Jun 2016, 11:35
Delphi-Quellcode:
type
  TType = (TT1, TT2, TT3, TT4, TT5, TT6, TT7);
  TTypeNormal = TT1 .. TT6; // Teilmenge von TType
  TTypeSpezial = TT5 .. TT7; // Teilmenge von TType
genau so funktioniert es.
Vielen Dank.

MfG DrTosh
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Type Ableitung oder Parametereinschraenkung???

  Alt 28. Jun 2016, 13:14
Delphi-Quellcode:
type
  TType = (TT1, TT2, TT3, TT4, TT5, TT6, TT7);
  TTypeNormal = (TT1, TT2, TT3, TT4, TT5, TT6); // Teilmenge von TType
  TTypeSpezial = (TT5, TT6, TT7); // Teilmenge von TType
Sowas geht ohne $SCOPEDENUMS garnicht -> Doppelte Bezeichner.

Denn so definiert sind das keine Teilmengen, sondern eigenständige Enums
und dort ist TTypeSpezial.TT6=1, TTypeNormal.TT6=5 und TType.TT6=5.

Ach ja, auch wenn du das in den Parametertypen begrenzt, dann betrifft dfas nur die direkte Übergabe, aber bei Übergabe in einer Vaiable, wird das nicht geprüft,
was du dann notfalls selber zur Laufzeit nochmal prüfen müsstest.
$2B or not $2B
  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
 
#5

AW: Type Ableitung oder Parametereinschraenkung???

  Alt 28. Jun 2016, 13:23
Ich denke das war ihm durchaus bewusst:
Ich weiss, das der Code oben Syntaktisch falsch ist.
Er ist nur fuer die Darstellung, was ich erreichen moechte.
[…]
Gibt es eine Moeglichkeit, wie ich das realisieren kann?
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
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#6

AW: Type Ableitung oder Parametereinschraenkung???

  Alt 28. Jun 2016, 13:31
Ich arbeite bei so etwas gerne mit Sets.

Übergeben wird dann mit dem Set die Teimenge.

Delphi-Quellcode:
type
  TType = (TT1, TT2, TT3, TT4, TT5, TT6, TT7);
  TTypeSet = set of TType;

const
  TTypeNormal = [TT1 .. TT6];
  TTypeSpezial = [TT5 .. TT7];
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  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:30 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