代码,版本delphi6
******************************
procedure TForm1.Button1Click(Sender: TObject);
var
aa:boolean;
begin
  aa:=true;
  aa:=false;
  if aa then
  Memo1.Lines.Add('aaaaa');
  if not(aa) then
  begin
    Memo1.Lines.Add('bbbb');
    aa:=true;
  end;
end;end.
*************************************
其中的aa不能被赋为真值。请高人帮助解答。

解决方案 »

  1.   

    你为什么说aa不能赋为True?是下断点后看的吗?
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    aa:boolean;
    begin
      aa:=true;
      aa:=false;
      if aa then
      Memo1.Lines.Add('aaaaa');
      if not(aa) then
      begin
        Memo1.Lines.Add('bbbb');
        aa:=true;
      end;
     //在以下这句是有效的//
     if aa then beep;end;//而在这外面就没效了。。end.以上代码是在局部区啊!晕倒!
    没听说过:“不是全局的变量,在其局部过程结束后AA就不存了”
      

  3.   

    to dctony 是的,我是在下了断点的时候看的,而且特别是我打出'bbbb'字符串后aa没有被赋值,这样的话,下面的语句如果再用aa的话不就出错了吗?to madyak 我开始也以为是编辑器优化的原因,但是这样的话aa的值会出现错误,请看我给dctony的回答,我觉得编辑器不应该给优化错误了。现在我都不敢用局部变量了。to lxtnt 谢谢lxtnt的回答,但是我的aa变量是在‘Button1Click’这个局部过程里声明的,而且以上代码还是在这个过程里的,不应该在过程没有结束的时候被清除阿?你说是不是?请大家再帮忙看看,怎样才能让aa得值在这个过程里有效。不然还怎么用局部的boolean的变量。
      

  4.   

    刚才我又调试了一下,虽然aa显示没有赋值但是他的值在以下运行过程中是正确的,确实应该是编辑器优化的问题。那么madyak分吧。