Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi const Deklaration in record-typ deklaration (https://www.delphipraxis.net/133518-const-deklaration-record-typ-deklaration.html)

flippinho 3. Mai 2009 21:44


const Deklaration in record-typ deklaration
 
Hallo,

ich habe eine library-Datei heruntergeladen, die ich mit Delphi5 verwenden möchte.
Ich glaube, die Syntax ist von "free Pascal" abgeleitet.
Der Compiler meckert aber and der Stelle
"CAIRO_STATUS_SUCCESS = 0,"
mit der Meldung
" ',' oder ')' erwartet, aber '=' gefunden"

Weiß jemand, was diese Konstruktion bewirkt, und wie ich sie in Delphi 5 umsetzten kann?


type
cairo_status_t = (
CAIRO_STATUS_SUCCESS = 0,
CAIRO_STATUS_NO_MEMORY,
CAIRO_STATUS_INVALID_RESTORE,
CAIRO_STATUS_INVALID_POP_GROUP
};


Danke, Philipp

himitsu 3. Mai 2009 21:52

Re: const Deklaration in record-typ deklaration
 
in D5 ist es noch nicht möglich Enum-Elementen Werte zuzuweisen, aber da hier der erste Wert eh 0 ist, laß einfach das =0 weg.

PS: wir haben hier ein [delphi]-Tag, um Quellcode hübsch darzustellen
Delphi-Quellcode:
type
  cairo_status_t = (
    CAIRO_STATUS_SUCCESS,
    CAIRO_STATUS_NO_MEMORY,
    CAIRO_STATUS_INVALID_RESTORE,
    CAIRO_STATUS_INVALID_POP_GROUP);

flippinho 3. Mai 2009 23:10

Re: const Deklaration in record-typ deklaration
 
Hallo himitsu,

danke für die prompte Antwort.
Leider habe ich in der library auch Konstruktionen, in denen die Wertzuweisung nicht null ist. Gibt es vielleicht in D5 trotzdem einen Möglichkeit, eine entsprechende Konstruktion umzusetzen?


Delphi-Quellcode:

cairo_content_t = (
    CAIRO_CONTENT_COLOR = $1000,
    CAIRO_CONTENT_ALPHA = $2000,
    CAIRO_CONTENT_COLOR_ALPHA = $3000
  );

Mithrandir 3. Mai 2009 23:14

Re: const Deklaration in record-typ deklaration
 
Delphi-Quellcode:
const
    CAIRO_CONTENT_COLOR = $1000;
    CAIRO_CONTENT_ALPHA = $2000;
    CAIRO_CONTENT_COLOR_ALPHA = $3000;

type
  cairo_status_t = (
    CAIRO_CONTENT_COLOR,
    CAIRO_CONTENT_ALPHA,
    CAIRO_CONTENT_COLOR_ALPHA);
Müsstest du mal testen, kann das grad nicht ausprobieren... ;)

himitsu 3. Mai 2009 23:21

Re: const Deklaration in record-typ deklaration
 
ich glaub das ging nicht und wenn dem so ist, dann eher so:
Delphi-Quellcode:
const
    CAIRO_CONTENT_COLOR = $1000;
    CAIRO_CONTENT_ALPHA = $2000;
    CAIRO_CONTENT_COLOR_ALPHA = $3000;

type
  cairo_status_t = Word;

Mithrandir 3. Mai 2009 23:24

Re: const Deklaration in record-typ deklaration
 
Äh, ja, macht auch irgendwie Sinn... :gruebel:

flippinho 4. Mai 2009 23:07

Re: const Deklaration in record-typ deklaration
 
Hallo,

die Lösung von himitsu ist wahrscheinlich die beste Umsetzung. Wenn ich die Konstruktion damit ersetzte, brauche ich nur noch an den Stellen, wo der Compiler meckert, die entsprechenden Ausdrücke ersetzten, und es funktioniert.

Schönen Dank an alle, die mir so zügig geholfen haben.


Delphi-Quellcode:
const
    CAIRO_CONTENT_COLOR = $1000;
    CAIRO_CONTENT_ALPHA = $2000;
    CAIRO_CONTENT_COLOR_ALPHA = $3000;

type
  cairo_status_t = Word;

himitsu 4. Mai 2009 23:34

Re: const Deklaration in record-typ deklaration
 
du mußt nur aufpassen ... das WORD hab ich anhand der Konstanten so gelegt,
aber je nach Speicherausrichtung, der Schnittstelle auf der anderen Seite,
müßtest du da eventuell noch was ändern, falls es Probleme gibt.
z.B. nach Integer/LongInt oder Cardinal/LongWord

in C sind z.B. viele Enumeratoren 4 Byte groß,
wärend in Delphi standardmäßig vieles nur 1 Byte ist, da {$MINENUMSIZE 1}


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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