Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ThemeManager - BCB Compilerprobleme (https://www.delphipraxis.net/104679-thememanager-bcb-compilerprobleme.html)

messie 8. Dez 2007 20:23


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:
//-------------------------------------------------------------------------
typedef enum THEMESIZE
{
    TS_MIN,            // minimum size
    TS_TRUE,           // size without stretching
    TS_DRAW           // size that theme mgr will use to draw part
};
meldet "Need an identifier to declare".
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:
{$EXTERNALSYM THEMESIZE}
  TThemeSize = THEMESIZE;
in dem sich die Deklaration unterscheidet.

Wer erklärt mir, wie D6 und BCB6 das verarbeiten und wo es klemmt?

Grüße, Messie

Muetze1 8. Dez 2007 23:36

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?

messie 9. Dez 2007 10:13

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

DMW 9. Dez 2007 12:28

Re: ThemeManager - BCB Compilerprobleme
 
Zitat:

Zitat von messie
Wer erklärt mir, wie D6 und BCB6 das verarbeiten und wo es klemmt?

Tu ich doch gerne ;)

Grundsätzlich deklariert man in C++ ein enum wie auch andere Typen:
Code:
enum MyFirstEnum
{
  mfeRed = 1,
  mfeGreen,
  mfeBlue,
};
Dies entspräche in Delphi dem folgenden Konstrukt:
Delphi-Quellcode:
type
  MyFirstEnum = (
    mfeRed,
    mfeGreen,
    mfeBlue,
  );
Auch die folgenden Zeilen haben so ziemlich die gleiche Bedeutung:
Code:
typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
Delphi-Quellcode:
type
  AnotherNameForMyFirstEnum = MyFirstEnum;
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:
Code:
enum MyFirstEnum mfevar;
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.)

Da dies somit relativ häufig vorkommt, gibt es die Möglichkeit, den Typen selbst innerhalb der typedef-Deklaration zu deklarieren. Aus
Code:
enum MyFirstEnum
{
  mfeRed = 1,
  mfeGreen,
  mfeBlue,
};
typedef enum MyFirstEnum AnotherNameForMyFirstEnum;
würde somit
Code:
typedef enum MyFirstEnum
{
  mfeRed = 1,
  mfeGreen,
  mfeBlue,
} AnotherNameForMyFirstEnum;
Gleiches gilt für struct und union.

Bei deinem Versuch hast du in der typedef-Deklaration den eigentlichen Typ-Alias weggelassen, weshalb der Compiler sich natürlich beschwert.

messie 9. Dez 2007 13:10

Re: ThemeManager - BCB Compilerprobleme
 
Ok,

damit komme ich zur Lösung:
Delphi-Quellcode:
typedef enum THEMESIZE
{
    TS_MIN,            // minimum size
    TS_TRUE,           // size without stretching
    TS_DRAW,           // size that theme mgr will use to draw part
}TThemeSize;
Danke, Messie


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