有以下程序:function ExecuteSQL(oDatabase:TDatabase;SQLString:string):Boolean;
begin
Result := false;
DBErrorMessage := '';
with TQuery.Create(nil) do begin
try
SessionName := oDatabase.SessionName;
DatabaseName := oDatabase.DatabaseName;
SQL.Text := SQLString;
ExecSQL;
DBRowsAffected := RowsAffected;
Result := true;
except
on E : Exception do DBErrorMessage := E.Message;
end;
Free;
end;
end;TQuery是自己定义的类,为什么可以不定义变量就直接调用Create,那创建之后的对象由什么指针管理,为什么调用Free时会自动把这个对象释放调
begin
Result := false;
DBErrorMessage := '';
with TQuery.Create(nil) do begin
try
SessionName := oDatabase.SessionName;
DatabaseName := oDatabase.DatabaseName;
SQL.Text := SQLString;
ExecSQL;
DBRowsAffected := RowsAffected;
Result := true;
except
on E : Exception do DBErrorMessage := E.Message;
end;
Free;
end;
end;TQuery是自己定义的类,为什么可以不定义变量就直接调用Create,那创建之后的对象由什么指针管理,为什么调用Free时会自动把这个对象释放调
内部会产生一个默认的实例名,这个实例的指针会指向TQuery这个类,
free是delphi的一个内部函数,你调用它当然可自动释放,这只断开与TQuery这个类的链接,还可以用freeandnil()这个函数,
指针由内部对象管理。
调用free时使用的是前面创建的TQuery对象的free,自然就释放了。
你说的由“内部产生一个默认的实例名,这个实例的指针会指向TQuery这个类。”
请问什么资料上有说delphi有这种机制。
因为我以前用一直都是先定义一个实例
例如
var
MyQuery : TQuery
to: fangchangjiang
指针由内部对象管理,请问这个对象是什么?什么资料上有说。
下面是类的方法的介绍
类的方法可以直接由类名来执行,可不通过实例
类的方法建立的方法是加class指示字
tmy_obj:tobject
class procedure show;
end;
var my_obj:tmy_obj;procedure tmy_obj.show
begin
showmessage('我是类的方法');
end;
你可以直接用tmy_obj.show来执行,不用先建立my_obj
create和destroy叫构析函数,和类的方法也是一样的,可以由类名执行。
但是类的方法是不能调用类其中的字段的,因为这时类的实例还没有建立。