Painting simple ellips in C++ Builder. Exception raising.

hazamin's Avatar
Light Poster
hi. I am writing application on C++ Builder which draws ellipse on Canvas. i get run-time error: When canvas color is being changed compiler generates exception.
So, i have created new unit (unit2) with Tellipse class declaration:

#ifndef Unit2H
#define Unit2H
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>

class Tellipse
  int x1,y1,x2,y2;
  TCanvas *canvic;
  TColor *col;

  Tellipse(TCanvas *canv, int px1, int py1, int px2, int py2,TColor pcol );
  void draw(bool visible);
  void move(int dx, int dy);

} ;

extern PACKAGE Tellipse *el;
Here is implementation (unit2.cpp):

#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)

Tellipse::Tellipse(TCanvas *canv, int px1, int py1, int px2, int py2,TColor pcol) // initializing values in constructor
  x1=px1; x2=px2; y1=py1; y2=py2;


void Tellipse::draw(bool visible)                         // for drawing ellipse on canvas
  if (visible) canvic->Pen->Color=*pcol ;           //here is all ok
               else canvic->Pen->Color=clWhite;    // this line compiler allocates with blue color
  canvic->Brush->Color=clWhite; // if i delete line above compiler allocates this line and raises exception
  canvic->Ellipse(x1,y1,x2,y2);                         // if i delete two lines above compiler allocates this line and raises exception

void Tellipse::move(int dx, int dy)                      // doesn't matter. Changing coordinates move ellipse somewhere
  draw(false);                       // stumbling block. 
  x1=x1+dx; x2=x2+dx;
  y1=y1+dy; y2=y2+dy;
  draw(true);                       // stumbling block. 
Telllipse::draw() is stumbling block.

In main unit (unit1.cpp) On form paint i call void __fastcall TForm1::formpaint(TObject *Sender)
Tellipse *el;
void __fastcall TForm1::formpaint(TObject *Sender)
Tellipse *el=new Tellipse(PaintBox1->Canvas,0,10,3,20, clBlack);
   el->draw(true);  // stumbling block. 
What causes may underlie this error? Thanks for attention
xpi0t0s's Avatar, Join Date: Aug 2004
If the compiler itself generates an exception then I'd say that's a compiler bug. The compiler should throw an error if there's something wrong with the code, not crash.
Are you sure you mean the compiler and not the editor?