AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Enumeration nach Delphi 5 geändert?

Ein Thema von Bomberbb · begonnen am 23. Jul 2010 · letzter Beitrag vom 23. Jul 2010
Antwort Antwort
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 08:28
Delphi-Quellcode:
 type
   TSuit = (Hearts=13, Diamonds, Clubs=22, Spades);
Bei Delphi 5 ist es leider nicht möglich, die Werte bei einem Aufzählungstyp vorzugeben.
Workaround:
Delphi-Quellcode:
const
 Hearts=13;
 Diamonds=14;
 Clubs=22;
 Spades=23;
type
   TSuit = Integer;
Das kann natürlich im Code weitere Änderungen nötig machen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.665 Beiträge
 
Delphi 12 Athens
 
#2

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 08:43
Oder man schreibt sich 2 Mapping-Funktionen.
Delphi-Quellcode:
type
   TSuit = (Hearts, Diamonds, Clubs, Spades);

function OrdValue(Suit: TSuit): integer;
begin
  case Suit of
    Hearts: Result := 13;
    Diamonds: Result := 14;
    Clubs: Result := 22;
    else
      Result := 23;
  end;
end;

function SuitValue(Value: integer): TSuit;
begin
  case Value of
    0, 13: Result := Hearts;
    1, 14: Result := Diamonds;
    2, 22: Result := Clubs;
    else
      Result := Spades;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 09:19
oder
Delphi-Quellcode:
TSuit = (dummy0, dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7,
  dummy8, dummy9, dummy10, dummy11, dummy12, Hearts, Diamonds, dummy15,
  dummy16, dummy17, dummy18, dummy19, dummy20, dummy21, Clubs, Spades);
@DeddyH: die 0..2 sind Falsch und auch der Else-Block ist nicht sicher, vorallem in SuitValue

Delphi-Quellcode:
function OrdValue(Suit: TSuit): integer;
begin
  case Suit of
    Hearts: Result := 13;
    Diamonds: Result := 14;
    Clubs: Result := 22;
    Spades Result := 23;
    else raise exception // oder notfalls 'nen defaultwert
  end;
end;

function SuitValue(Value: integer): TSuit;
begin
  case Value of
    13: Result := Hearts;
    14: Result := Diamonds;
    22: Result := Clubs;
    23: Result := Spades;
    else raise exception // oder notfalls 'nen defaultwert
  end;
end;
aber besser so:
Delphi-Quellcode:
function OrdValue(Suit: TSuit): integer;
begin
  Result := Byte(Suit);
end;

function SuitValue(Value: integer): TSuit;
begin
  Result := TSuit(Byte(Value));
  // eventuell auch Result := TSuit(Value);
end;

// Byte eventuell an die Datengröße anpassen (Word, LongWord, Integer, ...)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Jul 2010 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.665 Beiträge
 
Delphi 12 Athens
 
#4

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 09:28
Die 0..2 hatte ich deshalb mit drin, falls doch versehentlich der tatsächliche Ordinalwert und nicht der gemappte übergeben wird. Und Defaultwerte hab ich schließlich auch, alles, was nicht passt, wird zu Pik.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#5

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 10:13
na, so ein mist. hab jetzt gedacht, ich installier mir fix D2005, aber das hat wohl probleme mit win7x64. Mal schauen, ob ich es irgendwann schaffe den quelltext zu kompilieren.

An diese definition
Code:
TSuit = (dummy0, dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7,
  dummy8, dummy9, dummy10, dummy11, dummy12, Hearts, Diamonds, dummy15,
  dummy16, dummy17, dummy18, dummy19, dummy20, dummy21, Clubs, Spades);
hab ich auch schon gedacht, allerdings gibt es auch solche Definitionen in der Unit:

Code:
TPlatformid = (ePlfmNone = $00000000,ePlfmAll = $0001013F);
und spätestens da stehe ich dumm da...
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:12 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