首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问Delphi里面boolean初始化的值

2012-02-08 
请教Delphi里面boolean初始化的值我是JAVA程序员,对delphi完全不懂,最近有个古老的project用delphi写的,出

请教Delphi里面boolean初始化的值
我是JAVA程序员,对delphi完全不懂,最近有个古老的project用delphi写的,出了个问题。我追查源代码,发现有个地方实在看不懂,想求教。由于要求源代码保密,我只能提供部分函数代码,忘理解。

Delphi(Pascal) code
function ShowLogonDialog(var Privilege: Privilegs; var LastUserName: AnsiString): Boolean;var  Expired: Boolean; //这里Expired声明为boolean类型begin  SecLogonDialog := LogonDialog.Create(nil);  with SecLogonDialog do  try    Result := (TransparentBackgroundForm.ShowSystemModal(SecLogonDialog) = mrOk);    if Result then      Privilege := UserPrivilege(Expired) //这里没有赋值就直接使用了Expired    else      Privilege := eopsNone;    if Privilege <> eopsNone then      LastUserName := UserName;  finally    FreeAndNil(SecLogonDialog);  end;end;


再来看下Function UserPrivilege

Delphi(Pascal) code
function LogonDialog.UserPrivilege(var Expired: Boolean): Privilegs;begin  Result := IniFileStorage.UserPrivilege(UserNameEdit.Text, PasswordEdit.Text, Expired);  if Expired then // 如果Expired为True的话,就提示Account has expired    PxLOG.JclLogFmt(PXLC_INF, 'Account has expired.')  else  if Result = eopsNone then    PxLOG.JclLogFmt(PXLC_ERR, 'Invalid logon.');end;


问题是登录时,出现了"Account has Expired.",但是是2012年1月1号才出现的,以前一直都是正常的。我对这里的Expired很不理解,没有赋值直接使用,如果初始值默认为false,那就永远不会出现"Account has expired.",为true也永远会出现"Account has expired."。
如果是象C语言一样,如果没有通过初始化,值不确定(根据当时的栈值),那也不可能会这样。

对delphi实在不是很懂,理解上也是在Java或者C语言的角度来理解,求救。


[解决办法]
定义一个Boolean变量时,默认的初始值是False

你这里Expired是传址方式,在任何地方設置了Expired,都是会改变它的值的

要具体的踀踪下去,看看在那里改变了

热点排行