function TConfig.Readbool(ConfigID:EnConfig): boolean;
var
  MyIniFile: TIniFile;
  tBool:boolean;
  MainKey: string;
  SubKey: string;
begin
     tBool := false;
     MainKey := 'MainUI';
     if FileExists(FCfgFile) = false then Result := false;
     case ConfigID of
       swToolBar: SubKey := 'ShowToolBar';
       swState: SubKey := 'ShowState';
       swQueryResult: SubKey := 'ShowQueryResult';
       swLoginForm:
       begin
          MainKey := 'LOAD';
          SubKey := 'ShowLoginForm';
       end;
     end;
     MyIniFile := TIniFile.Create(FCfgFile);
     tBool := MyIniFile.ReadBool(MainKey,SubKey,false);
     MyIniFile.Free;
     Result := tBool;
end;function TMyApp.Login: boolean;
var
     loginForm:TLoginForm;
     tBool: boolean;
     
begin
     tBool := FConfig.Readbool(swLoginForm);
     if tBool = false then                    
     begin
          Result := true;    //为什么这一句总不会运行?????
     end;
     loginForm := TLoginForm.Create(FMainForm);
     Application.CreateForm(TLoginForm, loginForm);
     tBool := loginForm.Login;
     loginForm.Free;
     Result := tBool;
end;我都疯了,怎么那么怪啊,返回值就是false,但为什么下面begin里面的就不执行呢?晕倒

解决方案 »

  1.   

    我都受不了啦,不管是true还是false都不会执行begin 里面的代码
      

  2.   

    then Result := false;去掉试试
    我也很菜~~~~~~
      

  3.   

    if FileExists(FCfgFile) = false then Result := false    干吗要=false呢?FileExitsts就是返回boolean的啊!不过似乎不是这个错!
        还有FCfgFile是什么?变量?里面的值是什么!        提点意见,仅供参考!
      

  4.   

    if tBool = false then                      要么改成 if not tBool then 看看!
      

  5.   

    其它都是正确,单步调试返回false 就是
         if tBool = false then                    
         begin
              Result := true;    //为什么这一句总不会运行?????
         end;为什么在调试设断点的时候 Result := true;  这一句前面是个"叉",怪啊,不管里面语句执不执行都应该是个"勾"的啊?
      

  6.   

    if tBool = false then 这一句执行了,而且更怪的是下面如果有 else ... ,也不会执行呢,哇,真的不想用delphi了
      

  7.   

    Delphi经常会有这样的小Bug,你把你的工程保存,然后重启Delphi,问题可能就会消失。还有,如果断点跟踪不行,你可以ShowMessage(),应该可以解决问题。
    比如:     if tBool = false then                    
         begin
              Result := true;   
              ShowMessage(True);
         end;
      

  8.   

    大哥, 我重起了两次delphi,一次system,我用的是 win2K p
      

  9.   

    <执行>
         if tBool = false then <执行>                   
         begin
         .   <不执行>
         .   <不执行>
         .   <不执行>
         end
         else
         begin
         .     <不执行>
         .     <不执行>
         end;
         ...   <执行>
      

  10.   

    if not tBool then Result := true;
      

  11.   

    把您的原代码删除再重新写一次。主要是
    if tBool = false then <执行>                   
         begin
    这两句,我有一次不小心在写代码时输入了中文全角方式的空格也出现过问题,后来好不容易才想到。
    仅供参考!!
      

  12.   

    TIniFile实例读取的配置文件必须使用全路径,如果不使用全路径的话,它的搜索区域锁定在系统目录下而不是应用程序当前目录。你看看是不是这个原因造成的。
      

  13.   

    您试试不要用TBOOL而用其他的如TTBOOL。
      

  14.   

    我试了,我加了一句“CheckBox1.Checked:=tbResult;”就可以运行了应该是代码优化的结果,也就是 <不执行> 的代码是不起作用的,被Delphi优化掉了,
    你把 Project->Options->Compiler->Optimization 打勾去掉 ,再单步看看也就是说系统认为您的TBRESULT没用,