![]() |
enum und Case verwenden (Übersetzung aus C-Quellcode)
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:
jetzt wollte ich eine case Anweisung Ausführen um herauszufinden welcher Fehler besteht:
// 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 );
Delphi-Quellcode:
Doch hier habe ich logischerweise eine Typunverträglichkeit.
case errCode of
FAN_UNDEF: begin end; FAN_OK: begin end; ... end; 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 |
Re: enum und Case verwenden (Übersetzung aus C-Quellcode)
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:
MfG Freddy
case eFanStat_t(errCode) of
... |
Re: enum und Case verwenden (Übersetzung aus C-Quellcode)
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): |
Re: enum und Case verwenden (Übersetzung aus C-Quellcode)
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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