Fehler mit struct
-
Hallo
hab ein problem,
habe- in meiner TRUNTrendAna.h mein history struct definiert
2)die header Datei TRUNTrendAna.h in meine "RUNData.h" eingebunden - 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
NadjaPS 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]
- in meiner TRUNTrendAna.h mein history struct definiert
-
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