TDateTime Unterschied in Borland c++ Builder 5 und 6?
-
Hallo,
leider ist mir heute ein Fehler untergekommen der für mich ziemlich unklar ist. Der selbe Quellcode funktioniert mit dem Borland c++ Builder 5 einwandfrei, führe ich diesen im Builder 6 aus bekomme ich folgende Fehlermeldungen:
[C++ Error] Unit2.cpp(11): E2303 Type name expected
[C++ Error] Unit2.cpp(11): E2139 Declaration missing ;Unit1.cpp, Unit1.h, sowie Unit2.cpp sind unverändert und vom Compiler erstellt worden.
//Unit2.h //--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- #endif class Testklasse { private: TDateTime test; };Ich hoffe ihr könnt mir sagen wo der Fehler ist

-
nimm mal das #endif nach ganz unten hinter deine deklarationen
mfg
-
Ceos schrieb:
nimm mal das #endif nach ganz unten hinter deine deklarationen
mfg
Bringt leider den selben Fehler.
Was mir aufgefallen ist, wenn ich die Klasse in die Unit1.cpp bzw. Unit1.h schreibe kommt der Fehler nicht.. jedoch ist dies für mich keine annehmbare Lösung.
-
könntest du eventuell noch n paar zeilen aus der cpp zeigen ? so um die zeile 13 herum, vielleicht steht da mehr
-
Das ist bereits die ganze .h Datei, habe fürs Forum hier nur die unnötigen Leerzeilen rausgenommen.
Edit: Habe die Zeilennummer mal geändert, damit nicht noch mehr Verwirrung entsteht.
-
In den Source-Dateien muß vorher die VCL inkludiert worden sein (damit der DatenTyp TDateTime bekannt gemacht wird), also
#include <vcl.h> #pragma hdrstop #include "unit1.h"
-
Am besten ich poste mal alle Dateien, damit man auch sehen kann was vorhanden ist, bzw. was fehlt.
Die include Anweisung für die vcl.h sollte ja eigentlich in der Unit1.cpp reichen, hat bisher zumindest immer so geklappt.
Unit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "Unit2.h" //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUnit2.cpp
//--------------------------------------------------------------------------- #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init)Unit2.h
//--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- #endif class Testklasse { private: TDateTime test; };
-
Hallo
Wie Th schon sagt, in Unit2.h fehlt der Include auf die vcl.h
Es reicht nicht den Include in die cpp zu verschieben, denn du deklarierst schon in der Headerdatei ein TDateTime, dort muß der Typ auch bekannt sein.bis bald
akari
-
und das #endif in der Unit2.h steht schon wieder falsch. Es muß nach ganz unten.
[edit]Für TDateTime muß es nicht gleich vcl.h sein da reicht auch systdate.h [edit]