AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi enum und Case verwenden (Übersetzung aus C-Quellcode)
Thema durchsuchen
Ansicht
Themen-Optionen

enum und Case verwenden (Übersetzung aus C-Quellcode)

Ein Thema von DelphiManiac · begonnen am 28. Aug 2009 · letzter Beitrag vom 28. Aug 2009
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

enum und Case verwenden (Übersetzung aus C-Quellcode)

  Alt 28. Aug 2009, 12:58
Hallo,

ich muss einen Programmablauf eines C-Programmes in Delphi abbilden und tue mir bei den Aufzählungstypen (enum) schwer.

Kurze Erklärung es geht um Fehlercodes:

1 = Fehler A
2 = Fehler B
3 = Fehler C

etc

das enum in C sieht wie folgt aus:

typedef enmum {
FAN_UNDEF = 0,
FAN_OK,
FAN_FAIL
} eFanStat_t

Ziel soll es sein, dass ich ein Byte mit dem Status zurückbekomme und dann auf die Fehlerwerte prüfe

So habe ich das enum in Delphi umgesetzt

Delphi-Quellcode:
// Lüfter-Status
eFanStat_t = (
      FAN_UNDEF = 0 // undefiniert
      FAN_OK = 1 // fan ok
      FAN_FAIL = 2, // fan failed
      FAN_NA = 3 // fan nicht vorhanden
);
jetzt wollte ich eine case Anweisung Ausführen um herauszufinden welcher Fehler besteht:

Delphi-Quellcode:
    case errCode of
      FAN_UNDEF:
      begin

      end;
     FAN_OK:
      begin

      end;
...
    end;
Doch hier habe ich logischerweise eine Typunverträglichkeit.
Alternative wäre die Errorcodes als Konstanten zu definieren, aber das würde ja keinen Sinn machen, schließlich will ich ja ein Enum verwenden...

Vielen Dank schonmal

Grüße
DelphiManiac
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: enum und Case verwenden (Übersetzung aus C-Quellcode)

  Alt 28. Aug 2009, 13:03
Hallo DelphiManiac,

ich gehe mal davon aus, dass errCode ein Integer ist. Damit du errCode dann in deiner Case-Abfrage benutzen kannst, musst du errCode nur auf deinen Enumerationstyp casten.

Delphi-Quellcode:
case eFanStat_t(errCode) of
...
MfG Freddy
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: enum und Case verwenden (Übersetzung aus C-Quellcode)

  Alt 28. Aug 2009, 13:05
dann wirst du wohl den Type der Variable errCode ändern müssen und alles was damit zu tun halt (z.B. die Rückgabeparameter von Funktionen)

oder du konvertierst einen der Werte
Delphi-Quellcode:
case eFanStat_t(errCode) of
  FAN_UNDEF:


case errCode of
  Ord(FAN_UNDEF):
$2B or not $2B
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: enum und Case verwenden (Übersetzung aus C-Quellcode)

  Alt 28. Aug 2009, 13:11
Hallo himitsu,

danke für deine Antwort,
ich habe es jetzt nach deinem ersten Vorschlag gelöst mit der Typumwandlung!

Vielen Dank, hatte es erst fälschlicherweise so probiert

(errcode as eFanStat_t) das ging aber nicht,...

Gruß
DelphiManiac
  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 16:45 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