请教一下,XE2以上的版本创建流不需要Create吗

解决方案 »

  1.   

    局部变量的初始值不一定为0,XE2没问题只是凑巧了。procedure TForm13.Button1Click(Sender: TObject);
    var
     ResultStream:TStringStream;
     ResultStream1:TStringStream; 
    begin
      ResultStream := nil;
      ResultStream1 := nil;
      if Assigned(ResultStream) then FreeAndNil(ResultStream);
      if Assigned(ResultStream1) then FreeAndNil(ResultStream1);
    end;
      

  2.   

    ResultStream 为nil才报错的吧
      

  3.   

    var
     ResultStream:TStringStream;
     ResultStream1:TStringStream; 
    begin
     ResultStream:=nil;
     ResultStream1:= nil; 
      if Assigned(ResultStream) then FreeAndNil(ResultStream);
      if Assigned(ResultStream1) then FreeAndNil(ResultStream1);
    end;
    Delphi的局部变量不会被自动初始化,除非是生存期自管理类型的(字符串,接口,动态数组).
    所以你这两个变量内容是随机值,有时候为nil表现出来的就是没问题的.加上:=nil那两句就没问题了
      

  4.   

    感谢2楼的指点,终于明白了,XE2之前的版本都没有问题,到XE4就出问题