紧急求助:怎么让一个函数等于另外一个函数。(200分)

  • 主题发起人 主题发起人 ontheway
  • 开始时间 开始时间
O

ontheway

Unregistered / Unconfirmed
GUEST, unregistred user!
假设Delphi定义了一个函数:
function A(const Name: string): TComponent;
现在我自己编写了一个函数:
function B(const Name: string): TComponent;
我必须在剩下的代码中让A函数执行我B函数的功能,怎么办?
好像以前在Delphi5 时,可以直接用
A:=B
现在在Delphi 6下,怎么编译也通不过,说Not Enough actual parameters.
我该怎么办?
 
你可以重载A函数;
 
一个实例不可能相等(所有类都指针,所以比较实例没有实际意义),
只能获取 RTTI 信息来判断。可以用 Is 作判断:if A is B then
...
 
就用重载哦override
 
使用过程类型,示例:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
IntProc=procedure(var Num:Integer);
TForm1 = class(TForm)
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Ip:IntProc;//定义过程类型;
X:Integer;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure do
uble(var Value:Integer);
begin
Value:=Value*2;
end;

procedure Triple(var Value:Integer);
begin
Value:=Value*3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
X:=10;
if RadioButton1.Checked then
Ip:=Double;//使用过程类型;
if RadioButton2.Checked then
Ip:=Triple;//使用过程类型;
Ip(X);
Label1.Caption:=IntToStr(X);
end;

end.
 
呵呵![:D]看错题得意思了,函数重载就可以了.对自己的函数:
function B(const Name: string): TComponent;override;
 
也很想知道 !
 
重载是OVERLOAD吧。。。
OVERRIDE是覆盖。。
而且楼组是让A执行B的功能。
那应该OVERLOAD A:
function A(const Name: string): TComponent;OVERLOAD;
begin
RESULT:=B(Name: string)
END;
 
重载就行了。
 
后退
顶部