注册 登录
编程论坛 C++ Builder

谁给我解释一下这个错误?

vincinzhao 发布于 2006-04-25 09:45, 1264 次点击
我编的一段程序在编译时老是出现这个错误,哪位能给解释一下/谢了!
E2089 Identifier 'Button2Click' cannot have a type qualifier
6 回复
#2
vincinzhao2006-04-25 09:45
毕业设计急啊
帮帮忙,谢谢!
#3
vincinzhao2006-04-26 08:01

这是出错的那段程序,函数声明,变量定义都在一开始就定义完了
void __fastcall TForm1::Button2Click(TObject *Sender)
{ Px1=StrToFloat(EditXbegin->Text);
Px2=StrToFloat(EditXend->Text);
Py1=StrToFloat(EditYbegin->Text);
Py2=StrToFloat(EditYend->Text);
if(Px1==Px2&&Py1==Py2)
ShowMessage( "sorry,the number you enter is wrong");//此处有问题,需要结束插补
if( line->Checked==true&&arc->Checked==false)
{x1=Px1*100;
x2=Px2*100;
y1=Py1*100;
y2=Py2*100;
Xo=(int)x1;
Xe=(int)x2;
Yo=(int)y1;
Ye=(int)y2;
Sx=panduan(Xe,Xo);
Sy=panduan(Ye,Yo);//注意,再将坐标转化为脉冲后,在坐标方向的走步是否能合作表象符合不可知!
Fx=0;
Fy=0;//终点判断位设初值
V=StrToFloat(EditV->Text);
Qi=StrToFloat(EditT->Text);
Qd=V*Qi;
FRN=V*sqr(Xe*Xe+Ye*Ye);
Qd=FRN*Qi;
OX=Xe*Qd;
OY=Ye*Qd;
if(abs(Xe-Xo)>abs(Ye-yo))C=abs(Xe-Xo);
else c=abs(Ye-yo);
X[0]=Xe;
for(i=1;i<=C;i++)
{
Lab1:
if(Fx=0)
{
if((X[i]-Xe)*Sx>0)
{OX=Xe-X[i-1];
X[i]=Xe,Fx=1;}
else goto(Lab2);
}
else goto(Lab2);
Lab2:
if(Fy=0)
{
if((Y[i]-Ye)*Sy>0)
{OY=Ye-Y[i-1];
Y[i]=Xe,Fy=1;}
else goto(Lab3);
}
else goto(Lab3);
Lab3:
if(Fx&&fFy)
break;//插补结束
else{if(Fx=0)X[i]=X[i-1]+Sx*OX;
if(Fy=0)Y[i]=Y[i-1]+Sy*OY;
}
Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
}
}
else{int l,R,X[400],Y[400],S[400],Sx,Sy,Psx,Psy;
float F,T,K;

if(Clockwise==true)
{if(Ye-Y0<0)Sx=-1;
else{ if(Ye-Y0>0)Sx=1;
else Sx=sgn(Xe-X0);}
if(Xe-X0<0)Sy=-1;
else{ if(Xe-X0>0)Sy=1;
else Sy=sgn(Ye-Y0);}
Psx=Sy;
Psy=-Sx;
}
else
{if(Ye-Y0<0)Sx=1;
else{ if(Ye-Y0>0)Sx=-1;
else Sx=sgn(Xe-X0);}
if(Xe-X0<0)Sy=1;
else{ if(Xe-X0>0)Sy=-1;
else Sy=sgn(Ye-Y0);}
Psx=-Sy;
Psy=Sx;
}
if(abs(Xe-X0)>abs(Ye-Y0))C=abs(Xe-X0);
else C=abs(Ye-Y0);
X[0]=X0;
Y[0]=Y0;
F=StrToFloat(EditV->Text);
T=StrToFloat(EditT->Text);
l=F*T;
R=sqr((Xe-Rx)*(Xe-Rx)+(Ye-Ry)*(Ye-Ry));
K=l/R;
for(i=1;i<=C;i++)
{OX=K*(Y[i-1]-1/2*K*X[i-1]);
OY=K*(X[i-1]-1/2*K*Y[i-1]);
X[i]=X[i-1]+Sy*OX;
Y[i]=Y[i-1]+Sx*OY;
S[0]=(Xe-X[0])*(Xe-X[0])+(Ye-Y[0])*(Ye-Y[0]);
S[i]=(Xe-X[i])*(Xe-X[i])+(Ye-Y[i])*(Ye-Y[i]);
if(S[i]<S[i-1])
{if((X[i]-Rx)*Psx>0&&(Y[i]-Ry)*Psy>0)
{if(OX>=OY)
{if(X[i]-Xe)*Sx>0)
{OX=Xe-X[i-1];
X[i]=Xe;
OY=Ye-Y[i-1];
Y[i]=Ye;
Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
break;}
else
{Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
continue;}
}
else{if(Y[i]-Ye)*SY>0)
{OX=Xe-X[i-1];
X[i]=Xe;
OY=Ye-Y[i-1];
Y[i]=Ye;
Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
break;}
else
{ Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
continue;}
}
}
else
{Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
continue;}
}
else
{ Image1->Canvas->MoveTo(X[i-1],Y[i-1]);
Image1->Canvas->LineTo(X[i],Y[i]);
continue;}
}
}
}
return 0;}


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

int panduan(int a,int b)
{int S;
if(a>=b)S=1;
else S=0;
return S;
}//象限判断,返回标志位
int sgn(float a)
{int s;
if(a>=0)s=1;
else s=-1;
return s;}

#4
starrysky2006-04-26 10:36
好象void __fastcall TForm1::Button2Click(TObject *Sender)
这个函数不需要返回值吧,都定义成void了。最后这个return 0;不需要。
#5
我是你的星空2006-04-26 10:47

return 0;}//去掉

唉,你的代码写得真是够可以的。。。。竟然还有goto,选C做毕业设计竟然还有goto

#6
vincinzhao2006-04-26 16:40

我也不想用啊,没办法。用SWITCH后程序不知道怎么弄了,无奈之举,见笑了。最后的return 0我是为了消除一个错误才加上的,不然老说我missing;啊

#7
vincinzhao2006-04-26 16:40
谢谢各位了!
1