![]() |
Type-Deklaration in Delphi
Moin moin,
wie ist diese Deklaration korrekt zu übersetzen?
Code:
In Delphi 2007 funktioniert folgendes:
typedef enum _PfForwardAction {
PF_ACTION_FORWARD = 0, PF_ACTION_DROP } PFFORWARD_ACTION,*PPFFORWARD_ACTION;
Delphi-Quellcode:
das kann ich in Delphi 5 aber so nicht schreiben. Wäre dort denn folgendes richtig? bzw. wie würde es korrekt sein?
type
_PfForwardAction = ( PF_ACTION_FORWARD = 0, PF_ACTION_DROP ); PFFORWARD_ACTION = _PfForwardAction; PPFFORWARD_ACTION = ^_PfForwardAction;
Delphi-Quellcode:
const
PF_ACTION_FORWARD = 0; PF_ACTION_DROP = 1; type PFFORWARD_ACTION = Integer; PPFFORWARD_ACTION = ^PFFORWARD_ACTION; |
Re: Type-Deklaration in Delphi
Also mein Delphi 7 kann die erste Übersetzung problemlos kompilieren, jedoch habe ich kein Delphi 5 zum testen da. Kann es sein, dass dort die explizite Wertzuweisung an einen Enum-Bezeichner Ärger macht? Weil wenn es nur das ist, kannst du die Zuweisung auch einfach weglassen, da ohnehin dem ersten Eintrag 0 zugewiesen wird.
Ansonsten kann man ohne die Compilermeldung nur rumraten. Edit: DeddyH hats ausgeschrieben, man senke die Augen ein paar wenige Grad :) |
Re: Type-Deklaration in Delphi
Ich denke mal, so sollte es gehen:
Delphi-Quellcode:
type
_PfForwardAction = (PF_ACTION_FORWARD,PF_ACTION_DROP); PFFORWARD_ACTION = _PfForwardAction; PPFFORWARD_ACTION = ^_PfForwardAction; |
Re: Type-Deklaration in Delphi
Danke für eure Antworten...
@Medium: Ja, es liegt an der Wertzuweisung. @DeddyH: So hatte ich es auch, bis mir folgende Konstrukte ins Auge gefallen sind:
Code:
/*
* fltdefs.h */ typedef enum _GlobalFilter { GF_FRAGMENTS = 2, GF_STRONGHOST = 8, GF_FRAGCACHE = 9 } GLOBAL_FILTER,*PGLOBAL_FILTER;
Delphi-Quellcode:
Müsste ich jetzt sozusagen Dummys einfügen? Wäre ja bei Zuweisungen von n = 1024 etc. ganz schön aufwendig :gruebel:
type
_GlobalFilter = ( GF_FRAGMENTS = 2, GF_STRONGHOST = 8, GF_FRAGCACHE = 9); GLOBAL_FILTER = _GlobalFilter; PGLOBAL_FILTER = ^_GlobalFilter; EDIT (Compilermeldung): [Fehler] fltdefs.pas(71): ',' oder ')' erwartet, aber '=' gefunden |
Re: Type-Deklaration in Delphi
Zitat:
|
Re: Type-Deklaration in Delphi
Hallo,
eine kurze und gute Beschreibung warum das mit D5 so nicht geht findest Du unter: ![]() Außerdem findest Du dort auch ein ![]() Gruß Axel |
Re: Type-Deklaration in Delphi
Okay, in dem Fall ist die einfachste und imho sinnvollste Lösung in der Tat das Auflösen in Konstanten, und einen "Dummy"-Enum Typ als LongInt. Interessant fand ich da insbesondere die in dem Link angesprochene Problematik bei der Parameterübergabe, so dass es bei Verwendung von DLLs o.ä. in diesem Zusammenhang noch sinnvoller ist :)
|
Re: Type-Deklaration in Delphi
@axellang: Danke für den interessanten link...
Demnach müsste es für D5 so korrekt sein:
Delphi-Quellcode:
const
PF_ACTION_FORWARD = 0; PF_ACTION_DROP = 1; type PFFORWARD_ACTION = LongInt; PPFFORWARD_ACTION = ^PFFORWARD_ACTION; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 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