这是什么错误???(100分)

  • 主题发起人 主题发起人 tansin
  • 开始时间 开始时间
T

tansin

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]
很简单,很奇怪,是这样的:
ISoilPressure = class
public
function Cal_Eai( h:do
uble):Double;virtual;abstract;stdcall;
end;
报错
[Error] Unit1.pas(21): Field definition not allowed after methods or properties
等n个奇怪的错误,不只该这样解决?
 
去掉stdcall!那是指让系统调用的方法!
 
去掉行吗?我的目的是用来掉用c++编写的动态连接库中的函数,
默认的调用方式似乎参考书上说不行。
 
这句错误的意思似乎是说:字段不能定义在方法或属性之后。
因此应该是要调整这一句所放的位置。你是不在这一句之后又定义了一些变量之类的?
 
要么去掉abstract;否则你就是一个纯虚拟方法了,而且你调用的函数的代码是没地方写的
 
ISoilPressure = class
public
function Cal_Eai( h:do
uble):Double;virtual;stdcall;abstract;
end;
就可以了,注意顺序,D5技术手册中有介绍。
 
不要放在public中申明,一般放在所有申明之后。
 
哎?shenloqi说的对啊,但这和顺序有关嘛?为什么呢??倒是第一次碰到[:D]
 
该类的完整定义是
Type
ISoilPressure = class
public
function Cal_Eai( h:do
uble):Double;virtual;abstract;cdecl;
function Cal_Mai( h:do
uble):Double;virtual;abstract;cdecl;
function Setm_Ix( h:do
uble):Double;virtual;abstract;cdecl;
end;
三个语句错误一样
我是想定义一个和c++兼容的类(结构),并不需要在delphi中实现,用来获得
在c++中定义的类的指针,该思想类似
com(见Don Box《com本质论》),在c++写的dll中,对应的定义为:
class ISoilPressure{
virtualdo
uble Cal_Eai(double h) = 0;
virtualdo
uble Cal_Mai(double h) = 0;
virtual bool Setm_Ix(double h) = 0;
};
另外,我将stdcall换成cdecl出现同样的问题,
 
同意HunterTeam的。
你是不是在其后又定义了什么?
在delphi中域成员要定义在最上面的。不能定义在方法的后面。
最好在"class"后接着定义你的变量。
 
我翻了一下书,没有找到在哪里写了的,不过你要记住virtual;stdcall;abstract;
的先后顺序,Delphi里面要注意的。
(to rockjie)
顺序:overload;virtual;{或dynamic;}stdcall;abstract;
overload;override;stdcall;abstract;
 
问题确实解决了,谢谢你们!
不过为什么会有顺序问题呢?
总之,谢谢所有参加讨论的人!
我以前用vc就没有这么好的网站,期望它越来越好,大家能共同提高!
 
后退
顶部