新手问一个构造函数的问题200分!(200分)

  • 主题发起人 主题发起人 gdtkd
  • 开始时间 开始时间
G

gdtkd

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在一个无窗体单元中构造一个NEWStrA的函数,在它下面有一个NEWStrB的子类函数,再在NEWStrB下面有一个NEWStrC函数。请应该怎样写?
大概DELPHI下效果应该是:
Stra:=NewStrA.NewStrB.NewStrC(A,B,C);
条件一:必须是一个无窗体的UNIT中无误运行,
条件二:必须达到以上表达式效果。
条件三:详细说明!
请各位可否详细一点,运行无误,立即给分!
 
这要看你的类是如何定义的了
 
你说的类是指NEWStrA吗?它是我自己新建的,TNEWStrA = Class(TObject)
 
还有呀,(A,B,C)是什么意思呀?是随便的参数吗?我看不太懂[:D]
 
是自己定义的参数,没特别意思!只希望将函数做成这样!谢谢了!
 
你要做的不是函数而是一个类的对象
type TNewStrA =class
end;
type TNewStrB =class(TNewStrA)
public
procedure NewStrB;
end;
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
NewStrA:TNewStrA;NewStrB:TNewStrB;
begin
NewStrA.NewStrB.NewStrC

end;
end.
你要学一点面向对象的知识哈
 
Function NewStrA : TNewStrA;
begin
result := TNewStrA.Create(Application);
end;
NewStrB要定义为TNewStrA的一个方法
NewStrC要定义为TNewStrB的一个方法
就可以了,不知我理解你的意思对不对?
 
type TNewStrB =class(TNewStrA)
public
procedure NewStrB;//写错了procedure NewStrC;
end;
 
实现Stra:=NewStrA.NewStrB.NewStrC(A,B,C):

type
TNewStrA =class;
TNewStrB=class;
TNewStrA =class
public
NewStrB:TNewStrB;
end;
TNewStrB =class(TNewStrA)
public
procedure NewStrC(A,B,C:string);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
NewStrA:TNewStrA;
begin
NewStrA.NewStrB.NewStrC('i','Love','You!');
end;

{ TNewStrB }

procedure TNewStrB.NewStrC(A,B,C:string);
begin
SHowmessage(A+B+C);
end;
 
RE:hongxing_dl按照你的方法,在我的无窗体单元中出现下列的错误!
[Error] Unit.pas(14): Unsatisfied forward or external declaration: 'TNewsStrA.NewStrB'

//------------------------------------------
Type
TNewStra = Class;
TNewStra = Class;
TNewStrb = Class
Public
NewsStr:TNewStra

End;
TNewStrB=Class(TNewStra)
Public
Function NewStrc(SNo,TNo,BmpPath:String):String;
End;
 
OK!已经能顺利运行了,但为什么不能我在别的窗体调用中,输入提示没有出现NEWSTRC在NEWSTRB里,我已经把NEWSTRC定义在NEWSSTRB的PUBLIC里了,还有为什么输入提示里同时出现type newstra 和 type newstrb,不是先输入newstra后,再出现newstrb
 
算了!还是结束了吧!
 
type TNewStrB =class
public
procedure NewStrB(a,b,c:String);
end;
type TNewStrA =class
public
NewStrB:TNewStrB;
end;
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
NewStrA:TNewStrA;
begin
NewStrA.NewStrB.NewStrC

end;
end.
 
后退
顶部