Fehler mit struct



  • Hallo
    hab ein problem,
    habe

    1. in meiner TRUNTrendAna.h mein history struct definiert
      2)die header Datei TRUNTrendAna.h in meine "RUNData.h" eingebunden
    2. versuche history in der "RUNData.h" zu initializieren

    history *run_history ;
    4) erhalte folgende Fehlermeldung

    [C++ Error] TRUNForm.h(105): E2303 Type name expected

    wie kann ich diesen Fehler beheben?

    Danke
    Nadja

    PS hier ist der Quellcode

    [cpp]//---------------------------------------------------------------------------

    #ifndef TRUNTrendAnaH
    #define TRUNTrendAnaH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>

    //#include "TRUNForm.h"
    #include "RUNData.h"
    #include "PrgData.h"
    #include "MotorData.h"
    #include "MeasData.h"
    #include "RunParameter.h"

    class TRUNForm;
    class RUN_data;
    class Prg_data;
    class Motor_data;
    class Meas_data;
    class Run_param;

    //---------------------------------------------------------------------------

    typedef struct
    {
    float ak1;
    float bk1;
    float U;
    double MessTime;
    }history;

    //---------------------------------------------------------------------------

    class TRUNTrendAna : public TForm
    {
    __published: // IDE-managed Components
    private: // User declarations
    AnsiString ProgDir;
    bool trend_mode;
    bool database;
    TDateTime TrendTime;

    public: // User declarations
    //Run_data * runData; Run_data *theData,
    Prg_data *prgData;
    Motor_data *engData;
    Meas_data *measData;
    Run_param *run_paramData;

    __fastcall TRUNTrendAna(TComponent* Owner);
    __fastcall TRUNTrendAna(TComponent* Owner, Prg_data *theprgData, Motor_data *theengData, Meas_data *themeasData);

    };
    //---------------------------------------------------------------------------
    extern PACKAGE TRUNTrendAna *RUNTrendAna;
    //---------------------------------------------------------------------------
    #endif
    _________________________________________________________________
    die TRUNForm.h

    //---------------------------------------------------------------------------

    #ifndef TRUNFormH
    #define TRUNFormH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <Buttons.hpp>
    #include <ExtCtrls.hpp>
    #include <Graphics.hpp>
    #include <ComCtrls.hpp>

    /*
    #include "PrgData.h"
    #include "RUNData.h"
    #include "MotorData.h"
    #include "MeasData.h" */

    #include "TKurbelsternForm.h"
    #include "TZeitverlaufForm.h"
    #include "TRUNTrendAna.h"
    #include "dir.h"
    #include "MeasData.h"

    #include "hardware/tk.h"
    #include "hardware/tkstruct.h"
    #include <SCommunicationMgr.h>
    #include <Dialogs.hpp>
    #include <Db.hpp>
    #include <DBTables.hpp>
    #include <Buttons.hpp>
    #include "Stati.h"

    class TZeitverlaufForm;

    class Run_data;
    class TFormKurbelstern;
    class TFormZeitverlauf;
    class TFormTrendAnalyse;
    class TRunOption;
    class TFormCDSOption;
    class TFormCalibrate;
    class TFormFortschritt;
    class TViewer;
    class TRepRun;
    class TRUNTrendAna;
    class TKurbelsternForm;

    //---------------------------------------------------------------------------
    class TRUNForm : public TForm
    {
    __published: // IDE-managed Components
    TPanel *Panel1;
    TLabel *LAdmin;
    TBitBtn *ToolButton1;
    TBitBtn *ToolButton2;
    TBitBtn *ToolButton3;
    TPanel *PanelHead;
    TLabel *LabelCicles;
    TLabel *rpm;
    TLabel *Cycles;
    TLabel *Label1;
    TImage *Logo;
    TLabel *LabelUniformity;
    TPanel *Panel2;
    TButton *ConfirmUniformityAlarm;
    TPanel *Panel6;
    TButton *Button1;
    TPanel *Panel7;
    TPanel *Panel4;
    TLabel *LabelLimit;
    TLabel *LabelCurrent;
    TLabel *Limit;
    TLabel *Current;
    TPanel *Panel3;
    TLabel *LabelMaxValue;
    TLabel *LabelMinValue;
    TTrackBar *TrackBarUniformity;
    TPanel *Panel5;
    TShape *Shape1;
    TPanel *PanelLampen;
    TPanel *PanelStatusLoadBalance;
    TStatusBar *StatusBarRun;
    TTimer *Preview_Timer;
    TTimer *MyTimer;
    TTimer *AdmTimer;
    void __fastcall TimerAction(TObject *Sender);

    private: // User declarations
    AnsiString ProgDir;
    Prg_data *prgData ;
    history *run_history ;

    short msg_pending;
    TKurbelsternForm *myKurbelstern;
    TZeitverlaufForm *myZeitverlaufForm;
    TRUNTrendAna *myFormTrendAnalyse;
    Run_data *test;

    public: // User declarations
    __fastcall TRUNForm(TComponent* Owner);
    __fastcall TRUNForm(TComponent* Owner, Prg_data *theprgData) ;
    bool stat_win_active;
    Run_data *runData;
    Motor_data *engData;
    Meas_data *measData;
    Run_param *run_paramData;

    };
    //---------------------------------------------------------------------------
    extern PACKAGE TRUNForm *RUNForm;
    //---------------------------------------------------------------------------
    #endif[/cpp]



  • Vielleicht versuchste erstmal den quellcode nen bissle zu reduzieren also die sachen die fur das problem relevant sind zu lassen und den rest raus... sonst muss man alles erstmal rausschmeissen bevor man es selber teste... ist übrigens auch ne ganz nette methode für sich selber.. problembereich einschränken und dann testen.. wird übersichtlicher 🙂



  • hier die kurzfassung des codes

    Der Fehler ist weiter folgender
    [C++ Error] TRUNForm.h(47): E2303 Type name expected
    [C++ Error] TRUNForm.h(47): E2139 Declaration missing ;

    [b][b]Die TRUNForm.h[/b][/b]

    //---------------------------------------------------------------------------
    
    #ifndef TRUNFormH
    #define TRUNFormH
    //---------------------------------------------------------------------------
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    typedef Word    word;
    typedef Word    word;
    
    class TZeitverlaufForm;
    typedef struct
    {
        byte              Group;
        word              Spezification;
        TDateTime         SendTime;
    }OutCommand;
    
    class TFormTrendAna;
    
    //---------------------------------------------------------------------------
    class TRUNForm : public TForm
    {
    __published:	// IDE-managed Components
            void __fastcall TimerAction(TObject *Sender);
    
    private:	// User declarations
    
            history   *run_history ;//Zeile 47
    
    public:		// User declarations
            __fastcall TRUNForm(TComponent* Owner);
    
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TRUNForm *RUNForm;
    //---------------------------------------------------------------------------
    #endif
    

    [b][b]Die TRUNTrendAna.h[/b][/b]

    //---------------------------------------------------------------------------
    
    #ifndef TRUNTrendAnaH
    #define TRUNTrendAnaH
    //---------------------------------------------------------------------------
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    
    #include   "TRUNForm.h"
    
    class TRUNForm;
    
    //---------------------------------------------------------------------------
    
    typedef struct 
    {
        float ak1;
        float bk1;
        float U;
        double MessTime;
    }history;
    
    //---------------------------------------------------------------------------
    
    class TRUNTrendAna : public TForm
    {
    __published:	// IDE-managed Components
    private:	// User declarations
            AnsiString   ProgDir;
    
    public:		// User declarations
            //Run_data * runData;   Run_data *theData,
            __fastcall TRUNTrendAna(TComponent* Owner);
    
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TRUNTrendAna *RUNTrendAna;
    //---------------------------------------------------------------------------
    #endif
    


  • die untere Headerdatei scheint nicht in die obige C++-Datei eingebunden zu sein.

    #include "TRUNTrendAna.h"
    

    Wenn du auf den (unsinnigen, wo hast du das her?) typedef für history verzichtest, und die Definition davon so umänderst:

    struct history
    { 
        float ak1; 
        float bk1; 
        float U; 
        double MessTime; 
    };
    

    kommst du statt des #include auch mit einer Vorwärtsdeklaration aus:

    struct history;
    


  • @ bashar ... jup sollte so gehen....

    zum typedef... (mach ich auch net so desswegen weiss ichs jetzt net genau)
    versuch mal:

    struct history* varName;

    soweit ich weiß, muss man bei Zeigern von typedef's die eine struct beschreiben auch ein struct vorne drann schreiben.

    -----
    have a nice day...
    bye, Raphi



  • Raphi schrieb:

    struct history* varName;

    soweit ich weiß, muss man bei Zeigern von typedef's die eine struct beschreiben auch ein struct vorne drann schreiben.

    Nein, das ist falsch. Du verwechselst da eine ganze Menge ... zB C mit C++, typedef-Namen mit struct-Tags.



  • 😃 😉 Danke Bashar dein tipp war super es funzt 👍 :p

    Nadja



  • @ bashar hmkay... war mir ja auch net sicher, wie ich auch geschrieben hab.. aber danke trotzdem für die aufklärung :-)...

    mag C eh net so richtig...

    -----
    have a nice day...
    bye, Raphi


Anmelden zum Antworten