assigned() 函数到底是测试的是窗体的什么值,窗体(fr_money_in)到底是个什么值???欢迎大家讨论。!!!!!procedure Tfr_main.money_outExecute(Sender: TObject);
var
fr_money_in:Tfr_money_out;
begin
if not assigned(fr_money_in) then //为什么再次出错
fr_money_out:=Tfr_money_out.create(application)
else
fr_money_out.show;
end;
出错信息如下:
---------------------------
p_cshgl
---------------------------
Access violation at address 0046403A in module 'p_cshgl.exe'. Read of address 000002EC.
---------------------------
确定
---------------------------
var
fr_money_in:Tfr_money_out;
begin
if not assigned(fr_money_in) then //为什么再次出错
fr_money_out:=Tfr_money_out.create(application)
else
fr_money_out.show;
end;
出错信息如下:
---------------------------
p_cshgl
---------------------------
Access violation at address 0046403A in module 'p_cshgl.exe'. Read of address 000002EC.
---------------------------
确定
---------------------------
function Assigned(p: Pointer) : boolean;
begin
Result := p <> nil;
end;
fr_money_out.show;而fr_money_out未必就初始化了。
下面的代码保证你不会出错。(猜测fr_money_out是全局变量,在Unit中定义了)
procedure Tfr_main.money_outExecute(Sender: TObject);
begin
if not assigned(fr_money_out) then
fr_money_out:=Tfr_money_out.create(application)
else
fr_money_out.show;
end;