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;
    //---------------------------------------------------------------------------
    #endif
    

    Unit2.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]


Anmelden zum Antworten