[错误 E2356 Type mismatch in redeclaration of 'TForm1'怎么修改?

tracy1113 2008-10-11 04:57:06
我从书上抄的代码,应该是没有问题的但是我编译不出来,总是出现
[C++ Error] Unit1.cpp(13): E2356 Type mismatch in redeclaration of 'TForm1'
[C++ Error] Unit1.cpp(13): E2141 Declaration syntax error
这两个问题,我不知道是哪错了,那位高手给解答一下,小女子在这里先谢过了!
原代码
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
const int MaxPoints =15;
struct TRPoint{
float X,Y;
};

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
private: // User declarations
TRPoint Points[MaxPoints];
float Rotation;
int PointCount;
void __fastcall RotatePoints();
public: // User declarations
virtual __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *TForm1;
//---------------------------------------------------------------------------
#endif

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

#include <vcl.h>
#pragma hdrstop


#include "Unit1.h"
#include "math.h"
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *TForm1;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Canvas->Pen->Color = clTeal;
Rotation = 0;
PointCount = MaxPoints;
RotatePoints();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int centerX=ClientWidth/2;
int centerY=ClientHeight/2;
int radius=min(centerY,centerX);
Canvas->Ellipse(0,0,radius*2,radius*2);
int i,j;
for(i=1;i<PointCount;i++){
for(j=i+1;j<PointCount;j++){
Canvas->MoveTo(radius+floor(Points[i].X*radius),radius+floor(Points[i].Y*radius));
Canvas->LineTo(radius+floor(Points[i].X*radius),radius+floor(Points[i].Y*radius));
}
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
RotatePoints();
Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RotatePoints()
{
const float M_2PI = 2*M_PI;
float StepAngle = M_2PI/PointCount;
Rotation+=M_PI/32;
if(Rotation>StepAngle)
Rotation-= StepAngle;

int i;
float j;
for(i=0,j=Rotation;i<PointCount;i++,j+=StepAngle)
{
Points[i].X = cos(j);
Points[i].Y = sin(j);
}
}
...全文
1174 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
对方感受到 2011-07-06
  • 打赏
  • 举报
回复
你的RotatePoints()函数本来就声明为private,当然就不能在.cpp文件定义啦,那是私有的,只能在公有函数里面被调用啊。只能在构造函数里面初始化啊。所以肯定会报错啦
tracy1113 2008-10-26
  • 打赏
  • 举报
回复
谢谢各位了,呵呵。应该是代码的问题吧!还是不行,不过还是谢谢各位。结贴
friendbcb 2008-10-25
  • 打赏
  • 举报
回复
extern PACKAGE TForm1 *TForm1;

改成

extern PACKAGE TForm1 *Form1;

多了个 T

.cpp 文件里也是一样的
yumikoo 2008-10-24
  • 打赏
  • 举报
回复
能运行但是效果不对就看你自己的代码了。。。
tracy1113 2008-10-24
  • 打赏
  • 举报
回复
谢谢楼上几位的回答!我还是不知为什么我这里显示不出来啊!这种莫名其妙的问题实在是。。。。。。。那位能给解答出来不胜感激。
tracy1113 2008-10-14
  • 打赏
  • 举报
回复
其实我就是用手打上去的,一开始运行的时候没出来,保存的时候就起了个中文名。今天重新打开个工程重新贴了一遍代码。能运行了,只是运行的时候不是一个图片在旋转,而是只有一个圆圈。这是为什么啊?不明白哪又出问题了。
F117p 2008-10-14
  • 打赏
  • 举报
回复
D:\旋转的金刚石\PROJECT2.OBJ
BCB现在能安装在中文目录下吗?哪个版本的?
编译通过了,连接恐怕也要出问题的,程序本身没错误,重新开个新工程,最好不要包含中文目录,然后手动输入代码,(不要复制,千万)
tracy1113 2008-10-11
  • 打赏
  • 举报
回复
有啊!窗口是有的,最开始的步骤是这样的
1.使用fill菜单的new Application命令开始一个新的应用程序
2 将窗体的标题改为Canvas,并将窗体的颜色属性color设置为clBlack黑色
3 从SYSTEM选项卡中选取timer组件,将其interval属性设为500
4 编写相应代码
hemiya 2008-10-11
  • 打赏
  • 举报
回复
你看看工程选项中的自动创建窗口中有没有Form1
tracy1113 2008-10-11
  • 打赏
  • 举报
回复
如果屏蔽掉就会出现[Linker Error] Unresolved external '_Form1' referenced from D:\旋转的金刚石\PROJECT2.OBJ这个错误,依旧是不行
tracy1113 2008-10-11
  • 打赏
  • 举报
回复
如果屏蔽掉就会出现[Linker Error] Unresolved external '_Form1' referenced from D:\旋转的金刚石\PROJECT2.OBJ这个错误,依旧是不行
jxw1987628 2008-10-11
  • 打赏
  • 举报
回复

extern PACKAGE TForm1 *TForm1;

这句屏蔽掉看!
jxw1987628 2008-10-11
  • 打赏
  • 举报
回复

extern PACKAGE TForm1 *TForm1;

这句屏蔽掉看!

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧