![]() |
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:
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?
type
TdwProgressBarState = [pbstMarquee = 0, pbstNormal = 1, pbstError = 2, pbstPaused = 3]; Greetz, ThY |
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; |
AW: D5 Typdeklaration von einer Menge
Besten Dank, genau das "set of" hatte mir gefehlt ;)
|
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 ![]() |
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:
Wieso die Standardwerte im Original mit übergeben werden, entzieht sich allerdings meiner Kenntnis.
type
TdwProgressBarState = (pbstMarquee, pbstNormal, pbstError, pbstPaused); |
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:
Anhand der Bezeichner pbst... würde ich allerdings auf einen Enum tippen,
// Enum:
x := pbstMarquee; if x = pbstMarquee then ; // Set: x := [pbstMarquee]; if x = [pbstMarquee] then ; x := [pbstMarquee, pbstError]; if x = [pbstMarquee, pbstError] then ; also einfach die unnötigen Vorgabewerte weglassen und die richtige Klammer nutzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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 by Thomas Breitkreuz