AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Type-Deklaration in Delphi

Ein Thema von x000x · begonnen am 11. Jul 2008 · letzter Beitrag vom 13. Jul 2008
Antwort Antwort
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#1

Type-Deklaration in Delphi

  Alt 11. Jul 2008, 14:14
Moin moin,

wie ist diese Deklaration korrekt zu übersetzen?
Code:
typedef enum _PfForwardAction {
   PF_ACTION_FORWARD = 0,
   PF_ACTION_DROP
} PFFORWARD_ACTION,*PPFFORWARD_ACTION;
In Delphi 2007 funktioniert folgendes:
Delphi-Quellcode:
type
  _PfForwardAction = (
    PF_ACTION_FORWARD = 0,
    PF_ACTION_DROP );
  PFFORWARD_ACTION = _PfForwardAction;
  PPFFORWARD_ACTION = ^_PfForwardAction;
das kann ich in Delphi 5 aber so nicht schreiben. Wäre dort denn folgendes richtig? bzw. wie würde es korrekt sein?
Delphi-Quellcode:
const
  PF_ACTION_FORWARD = 0;
  PF_ACTION_DROP = 1;

type
  PFFORWARD_ACTION = Integer;
  PPFFORWARD_ACTION = ^PFFORWARD_ACTION;
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 14:44
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 14:47
Ich denke mal, so sollte es gehen:
Delphi-Quellcode:
type
  _PfForwardAction = (PF_ACTION_FORWARD,PF_ACTION_DROP);
  PFFORWARD_ACTION = _PfForwardAction;
  PPFFORWARD_ACTION = ^_PfForwardAction;
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 x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 14:58
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:
type
  _GlobalFilter = (
    GF_FRAGMENTS = 2,
    GF_STRONGHOST = 8,
    GF_FRAGCACHE = 9);
  GLOBAL_FILTER = _GlobalFilter;
  PGLOBAL_FILTER = ^_GlobalFilter;
Müsste ich jetzt sozusagen Dummys einfügen? Wäre ja bei Zuweisungen von n = 1024 etc. ganz schön aufwendig

EDIT (Compilermeldung): [Fehler] fltdefs.pas(71): ',' oder ')' erwartet, aber '=' gefunden
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 15:00
Zitat von Medium:
... jedoch habe ich kein Delphi 5 zum testen da. Kann es sein, dass dort die explizite Wertzuweisung an einen Enum-Bezeichner Ärger macht?
Ja, das ist so. Delphi 5 kennt nur Aufzählungstypen, die mit 0 beginnen.
Andreas
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 15:10
Hallo,

eine kurze und gute Beschreibung warum das mit D5 so nicht geht findest Du unter: Pitfalls of converting.
Außerdem findest Du dort auch ein Conversion Helper Package für die IDE.

Gruß

Axel
Alexander Lang
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Type-Deklaration in Delphi

  Alt 11. Jul 2008, 16:24
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Type-Deklaration in Delphi

  Alt 13. Jul 2008, 00:38
@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;
Peter
-= Gruss Peter =-
-= alias x000x =-
  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 13:31 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