函数传递的问题 如何用一个函数替换类中的另一个函数?比如:一个类有函数PROC1,现在我写了个函数PROC2.如何用这个PROC2替换这个PROC1? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载。声明相同的名称,并且PROC2是从PROC1继承鸸而来。 对,参数要有区别proc(s:string);overload;proc(i:integer);overload; 方法重载一个类中有许多同名的方法带着不同的参数表,能重载的方法必须用overload指示符标识出来 >>比如:一个类有函数PROC1,现在我写了个函数PROC2.如何用这个PROC2替换这个PROC1?修改 Proc1 實現, 在Proc1中直接調用 Proc2, 這樣, 對外部的舊用戶, 就沒有什麼影響!!新用戶可使用Proc2 可能我说的不是很清楚.我的意思是现在有一个类的实例,我不想使用里面的某个函数,想用自己的函数在实例创建的时候,把那个函数替换掉.对于OVERLOAD只能在类的内部使用,我不想修改这个类的定义,只是想修改一下这个类函数的调用指针.请问如何实现? 新写一个类,继承你原来的类,然后override你要改的方法;不调用INHREI。。ED;调用你自己的方法; TForm = classprotected function WndProc(HndWnd: HWND; AMsg, WParam, LParam: LongInt): LongInt; stdcall;end; TForm1 = class(TForm)...protected function WndProc(HndWnd: HWND; AMsg, WParam, LParam: LongInt): LongInt; stdcall;end; unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TTest=class(TObject) private protected procedure test1(s:string);dynamic;//比如这个方法是你的类要代替的方法 public end; TmyTest=class(TTest)//新构造一个类;从你的类继承; private protected procedure test1(s:string);override;//OVERRIDE你要修改的方法; procedure yourmethod(s:string); public end;var Form1: TForm1;implementation{$R *.dfm}procedure TmyTest.yourmethod(s:string);begin showmessage(s+s);//你自己的方法;end;procedure TmyTest.test1(s:string);begin yourmethod(s);end;procedure TTest.test1(s:string);begin showmessage(s);end;procedure TForm1.Button1Click(Sender: TObject);var tmp:TmyTest;begin tmp:=TmyTest.Create ;//进行测试; tmp.test1('a'); tmp.Free;end;end. delphi 菜鸟提问 摄像头问题,如何屏蔽掉 "视频源" 对话筐? 菜鸟提问! ◥█〓★〓█◤界面风格喜爱程度调查◥█〓★〓█◤ 关于神州数码 请教!100分 如何将Excel的数据导入到数据库中 请指教,谢谢!(很着急!!!) 打印问题 任何保证数据库的完整性? 请教一个关于ADOQUERY.filter的问题 TreeView的节点问题 上班时间的小调查 ¥¥¥¥¥一个简单的链接库的使用问题¥¥¥¥¥¥
proc(s:string);overload;
proc(i:integer);overload;
一个类中有许多同名的方法带着不同的参数表,
能重载的方法必须用overload指示符标识出来
修改 Proc1 實現, 在Proc1中直接調用 Proc2, 這樣, 對外部的舊用戶, 就沒有什麼影響!!
新用戶可使用Proc2
我的意思是现在有一个类的实例,我不想使用里面的某个函数,想用自己的函数在实例创建的时候,把那个函数替换掉.对于OVERLOAD只能在类的内部使用,我不想修改这个类的定义,只是想修改一下这个类函数的调用指针.请问如何实现?
protected
function WndProc(HndWnd: HWND; AMsg, WParam, LParam: LongInt): LongInt; stdcall;
end;
...
protected
function WndProc(HndWnd: HWND; AMsg, WParam, LParam: LongInt): LongInt; stdcall;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TTest=class(TObject)
private
protected
procedure test1(s:string);dynamic;//比如这个方法是你的类要代替的方法
public
end;
TmyTest=class(TTest)//新构造一个类;从你的类继承;
private
protected
procedure test1(s:string);override;//OVERRIDE你要修改的方法;
procedure yourmethod(s:string);
public
end;
var
Form1: TForm1;implementation{$R *.dfm}
procedure TmyTest.yourmethod(s:string);
begin
showmessage(s+s);//你自己的方法;
end;
procedure TmyTest.test1(s:string);
begin
yourmethod(s);
end;
procedure TTest.test1(s:string);
begin
showmessage(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmp:TmyTest;
begin
tmp:=TmyTest.Create ;//进行测试;
tmp.test1('a');
tmp.Free;
end;end.