以下程序发生:project1.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address00000000'. Process stopped. Use Step or Run to continue.错误信息。请问以下代码错在哪里?执行Myfun(12)执行的是什么运算? f()函数会兼容定义的过程类型嘛?
public
{ Public declarations } end;
TMyFun=function(i:integer):integer;{声名一个过程类型}
var
Form1: TForm1;
Myfun:TmyFun;implementation{$R *.dfm}function f(i:integer):Integer;
begin
result:=i*2;
end;
function f2(j:integer):integer;
begin
result:=j+100;
end;
procedure TForm1.Button1Click(Sender: TObject);begin
Edit1.Text:=inttostr(myfun(12));
end;end.
public
{ Public declarations } end;
TMyFun=function(i:integer):integer;{声名一个过程类型}
var
Form1: TForm1;
Myfun:TmyFun;implementation{$R *.dfm}function f(i:integer):Integer;
begin
result:=i*2;
end;
function f2(j:integer):integer;
begin
result:=j+100;
end;
procedure TForm1.Button1Click(Sender: TObject);begin
Edit1.Text:=inttostr(myfun(12));
end;end.
解决方案 »
- 多线程将数据插入access,dbgrid来显示数据更新,但是出错!
- 数据库的迷茫,希望高人给指条名路
- 我提交事务总是提示:cannot perform this operation on a closed database
- comparestr的问题!求救
- 在Delphi5中安装改动过的quickRPT时遇到问题,请高手帮忙?
- 一不小心变星了,呵呵…………
- 关于实现MX方式发信--人民币求购代码,可以先汇款!详情请进,绝对不是哗众取宠!
- 大家帮忙该delphi的错
- 一天之内,你只能提前20次贴子!!!(??????????????????????????????)
- to Aiehorse,newyj,有问题向二位斑主请教啊
- string指针怎么用?
- (急)MDI窗体+浮动窗体
begin
MyFun := f2; // 加上这句 or := f;
Edit1.Text:=inttostr(myfun(12));
end;
var
myfun: TMyFun;
....
myFun := f; //myfun := f2;
Edit1.Text:=inttostr(myfun(12));
var bt:TStrings;
begin
//必须有下面的构造函数才行,不然会出现异常
//bt:=TStringList.Create;
bt.Add(' ');
end;
type
TMyClass = class
end;这个TMyClass和你的TMyFun一样是不能直接用的~~