Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [C++Buider] Programma werkend krijgen lukt niet. (https://forum.scholieren.com/showthread.php?t=700119)

langejongen 24-12-2003 15:43

[C++Buider] Programma werkend krijgen lukt niet.
 
Ik ben voor school in C++ Builder een programma aan het maken.Er moet een sinus in de tijd getekend worden. Ik heb hieronder een stuk van het programma: Ik heb dus de .h-file en de C-file al gemaakt, alleen moet ik nog de .C-file maken. Ik ben een beginner in C++, dus heb geen idee hoe ik dat moet doen. Ik heb alleen het tablad Sinus.cpp en Sinus.h.

.h-file:

#ifndef SinusH
#define SinusH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
void __fastcall Timer1Timer(TObject *Sender);
private: // User declarations
public: // User declarations
{ int X;
int Y;
}
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

c-file:

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Sinus.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

# define aantalperioden 4
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ // Dit is de intialisatie, het laten beginnen van X op 1 en Y op 30
{ X=1;
Y=30;
}
}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
{ float H;
int pixelperperiode=Form1->Width/aantalperioden;

H=2*M_PI*(float)X/(float)pixelperperiode;
Canvas->MoveTo(X,Y-floor(sin(H)*30+0.5));
X++;
H=2*M_PI*(float)X/(float)pixelperperiode;
Canvas->MoveTo(X,Y-floor(sin(H)*30+0.5));
X++;
if (X>=Form1->Width)X=1;

Dit zijn de errors die ik krijg als ik het programma run:

[C++ Error] Sinus.h(19): E2040 Declaration terminated incorrectly
[C++ Error] Sinus.cpp(17): E2316 '_fastcall TForm1::{(TComponent *)' is not a member of 'TForm1'
[C++ Error] Sinus.cpp(31): E2451 Undefined symbol 'X'
[C++ Error] Sinus.cpp(32): E2451 Undefined symbol 'Y'
[C++ Warning] Sinus.cpp(39): W8004 'pixelperperiode' is assigned a value that is never used

Hopelijk kunnen jullie mij helpen.

Dr HenDre 24-12-2003 15:44

plaats ze eens tussen code tags of paste het op http://www.rafb.net/paste/
Ik zal er effe naar kijken

Lethalis 24-12-2003 17:55

sinus.cpp

Code:

//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "sinus.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

#define aantalperioden 4

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  X=1;
  Y=30;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  float H;
  int pixelperperiode=Form1->Width/aantalperioden;

  H=2*M_PI*(float)X/(float)pixelperperiode;
  Canvas->MoveTo(X,Y-floor(sin(H)*30+0.5));
  X++;
  H=2*M_PI*(float)X/(float)pixelperperiode;
  Canvas->LineTo(X,Y-floor(sin(H)*30+0.5));
  X++;
  if (X>=Form1->Width)X=1;
}
//---------------------------------------------------------------------------

sinus.h

Code:

//---------------------------------------------------------------------------
#ifndef sinusH
#define sinusH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
  TTimer *Timer1;
  void __fastcall Timer1Timer(TObject *Sender);
private:        // User declarations
public:                // User declarations
  int X;
  int Y;
  __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

En zet de timer-interval op 250, werkt prima :)

(maak een leeg projectje aan, met de unit sinus.cpp.. de header maakt ie autmatisch aan, en noem het project zelf anders dan 'sinus'.. zet een timer op je form, kopieer dan de inhoud).

langejongen 24-12-2003 18:21

Ik krijg een output writing error. En wat heb je allemaal veranderd in het programma?????

Lethalis 24-12-2003 18:37

1. bij de TForm1 class mogen de members niet tussen haakjes
2. compiler defines worden door de pre-processor alleen herkend als ze als '#define' worden geschreven, dus zonder spatie
3. je timer-functie opent met 2 haakjes en wordt niet afgesloten
4. en ik heb van je 2e MoveTo een LineTo gemaakt, anders wordt helemaal niks getekend ;)

langejongen 24-12-2003 19:10

Zal allemaal wel.;-)


Alle tijden zijn GMT +1. Het is nu 23:29.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.