![]() |
ThemeManager - BCB Compilerprobleme
Ich habe für ein paar Anwendungen den ThemeManager im Einsatz(Delphi). Nun wollte ich das auch im Builder 6 umsetzen und scheitere am Compiler:
Code:
meldet "Need an identifier to declare".
//-------------------------------------------------------------------------
typedef enum THEMESIZE { TS_MIN, // minimum size TS_TRUE, // size without stretching TS_DRAW // size that theme mgr will use to draw part }; nach meinem Verständnis unterscheidet sich das nicht von der Delphi-Typdeklaration
Delphi-Quellcode:
type
THEMESIZE = ( TS_MIN, // minimum size TS_TRUE, // size without stretching TS_DRAW // size that theme mgr will use to draw part ); Interessant ist dabei auch der Delphi-Anhang
Delphi-Quellcode:
in dem sich die Deklaration unterscheidet.
{$EXTERNALSYM THEMESIZE}
TThemeSize = THEMESIZE; Wer erklärt mir, wie D6 und BCB6 das verarbeiten und wo es klemmt? Grüße, Messie |
Re: ThemeManager - BCB Compilerprobleme
Warum übersetzt du den ThemeManager anstatt ihn direkt zu nutzen? BCB verarbeiten doch die Pascalquellen seit je her nativ und du brauchst nichts machen. Die gesamte VCL des C++Builders sind die Delphi Quellen. Wo liegt das Problem bzw. warum machst du dir den Aufwand?
|
Re: ThemeManager - BCB Compilerprobleme
Eigentlich nur, um ihn als Komponente in der IDE zu nutzen. Weiter hatte ich eigentlich noch nicht gedacht. Werde es aber mal ohne Registrierung mit der pas probieren
Grüße, Messie |
Re: ThemeManager - BCB Compilerprobleme
Zitat:
Grundsätzlich deklariert man in C++ ein enum wie auch andere Typen:
Code:
Dies entspräche in Delphi dem folgenden Konstrukt:
enum MyFirstEnum
{ mfeRed = 1, mfeGreen, mfeBlue, };
Delphi-Quellcode:
Auch die folgenden Zeilen haben so ziemlich die gleiche Bedeutung:
type
MyFirstEnum = ( mfeRed, mfeGreen, mfeBlue, );
Code:
typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
Delphi-Quellcode:
In C allerdings war es notwendig, bei der Verwendung von Typen deren Kategorie anzugeben; so sähe z.B. die Deklaration einer Variable des Typs MyFirstEnum so aus:
type
AnotherNameForMyFirstEnum = MyFirstEnum;
Code:
Deklariert man ein typedef auf den enum-Typen, so kann man sich die Verwendung der Typkategorie bei der Variablendeklaration sparen. Obgleich dieser Umweg in C++ nicht mehr notwendig ist, so ist es in C-Tradition üblich, für Strukturtypen gleich ein typedef anzugeben. (Die Headerdateien aus dem Windows-SDK sind ein gutes Beispiel.)
enum MyFirstEnum mfevar;
Da dies somit relativ häufig vorkommt, gibt es die Möglichkeit, den Typen selbst innerhalb der typedef-Deklaration zu deklarieren. Aus
Code:
würde somit
enum MyFirstEnum
{ mfeRed = 1, mfeGreen, mfeBlue, }; typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
Code:
Gleiches gilt für struct und union.
typedef enum MyFirstEnum
{ mfeRed = 1, mfeGreen, mfeBlue, } AnotherNameForMyFirstEnum; Bei deinem Versuch hast du in der typedef-Deklaration den eigentlichen Typ-Alias weggelassen, weshalb der Compiler sich natürlich beschwert. |
Re: ThemeManager - BCB Compilerprobleme
Ok,
damit komme ich zur Lösung:
Delphi-Quellcode:
Danke, Messie
typedef enum THEMESIZE
{ TS_MIN, // minimum size TS_TRUE, // size without stretching TS_DRAW, // size that theme mgr will use to draw part }TThemeSize; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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