Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi D5 Typdeklaration von einer Menge (https://www.delphipraxis.net/159770-d5-typdeklaration-von-einer-menge.html)

ThYpHoOn 12. Apr 2011 10:54

D5 Typdeklaration von einer Menge
 
Moin,

steh gerade etwas auf dem schlauch was die Typdekleration angeht. Bin gerade dabei eine aktuelle Delphi Library in Delphi 5 zu portieren (Win7Components) und hier ist eine Typdekleration die in Delphi 5 ungültig ist:
Code:
type
TdwProgressBarState = [pbstMarquee = 0, pbstNormal = 1, pbstError = 2, pbstPaused = 3];
Diese beschreibt ja eine Menge von Eigenschaften die TdwProgressBarState einnehmen kann, wie definiere ich das unter Delphi 5? Würde da jetzt die Eigenschaften als Konstanten und dann als Menge oder sehe ich das falsch?


Greetz, ThY

DeddyH 12. Apr 2011 10:58

AW: D5 Typdeklaration von einer Menge
 
Diese Art der Typdeklaration ist mir zwar nicht gelaufig, aber aus dem Bauch heraus würde ich es so versuchen:
Delphi-Quellcode:
type
  TdwProgressBarStates = (pbstMarquee, pbstNormal, pbstError, pbstPaused);
  TdwProgressBarState = set of TdwProgressBarStates;

ThYpHoOn 12. Apr 2011 11:04

AW: D5 Typdeklaration von einer Menge
 
Besten Dank, genau das "set of" hatte mir gefehlt ;)

patti 12. Apr 2011 11:21

AW: D5 Typdeklaration von einer Menge
 
Sicher, dass ein Set hier das richtige ist? Das würde ja bedeuten, dass der Zustand beispielsweise sowohl pbstNormal als auch pbstError zugleich sein kann...
Siehe auch hier

DeddyH 12. Apr 2011 12:21

AW: D5 Typdeklaration von einer Menge
 
Ich habe nur Menge gelesen und die eckigen Klammern gesehen. Aufgrund der Daten scheinen Kombinationen aber wirklich keinen Sinn zu machen. In dem Fall müsste es so wohl richtiger sein:
Delphi-Quellcode:
type
  TdwProgressBarState = (pbstMarquee, pbstNormal, pbstError, pbstPaused);
Wieso die Standardwerte im Original mit übergeben werden, entzieht sich allerdings meiner Kenntnis.

himitsu 12. Apr 2011 13:03

AW: D5 Typdeklaration von einer Menge
 
Delphi 5 kennt noch keine standardwerte für Enum/Set, aber wie richtig erkannt, sind die hier garnicht nötig, da der erste Wert (ohne Standardwert) immer 0 ist und dann die nachfolgenden hochgezählt werden.

Dann war noch die Klammer falsch.
[ statt )



Und ob nun Set oder Enum richtig sind, das solltest du wirklich mal prüfen.

Wie wird denn dieser Typ, bzw. eine entsprechende Variable später verwendet?

Delphi-Quellcode:
// Enum:
  x := pbstMarquee;
  if x = pbstMarquee then ;


// Set:
  x := [pbstMarquee];
  if x = [pbstMarquee] then ;

  x := [pbstMarquee, pbstError];
  if x = [pbstMarquee, pbstError] then ;
Anhand der Bezeichner pbst... würde ich allerdings auf einen Enum tippen,
also einfach die unnötigen Vorgabewerte weglassen und die richtige Klammer nutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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