就是是否create

解决方案 »

  1.   

    if Object1 <> nil then
      ...或者
    if Assigned(Object1) then
      

  2.   

    好像不行 var
      d:TMemoryStream;
    begin
      //d:=nil; 难道我还要加这句   
      if Assigned(d) then
      ShowMessage('ss');
    ps:流对象在局部变量 在声明后编译器是否做了什么操作?
      

  3.   

    var
    edt:TEdit;if assign(edt) then
       edt.text:='aaa';
      

  4.   

    你试过这段代码吗 我试了一下assign(edt)是true
    难道是我的编译选项设置到什么
      

  5.   

    全局变量:
    如果我们在应用程序一个单元中的interface关键字和implementation关键字之间的区域,定义一个全局变量,假如这个单元在别的地方被引用,那么这个单元的全
    局变量能够在别的地方被访问到,当然我们也可以在应用程序一个单元中的implementation关键字的后面定义全局变量,不过此时在这里定义的全局变量只能在本
    单元中被访问到,也就是说它是这个单元私有的,在别的单元中将不能被访问到。全局变量在应用程序的数据区分配内存,它存在于可执行模块(EXE或DLL等)的
    文件影像内部,在程序编译期就被决定,直到应用程序结束,全局变量所占用的内存地址是固定不变的。全局的非指针类型,声明后自动分配内存,并初始化值。
    全局的指针类型,声明后不自动分配内存,值为nil。局部变量:
    我们可以在函数或方法(包含过程)中定义局部变量,局部变量在应用程序的栈上进行分配,并且总是在栈上分配!局部变量的内存是在函数或方法(包含过程)
    被调用时分配,在函数或方法(包含过程)调用结束时其内存被释放。由于函数或方法(包含过程)在每次被调用时,栈顶可能发生变化,因此局部变量的内存地
    址是变化的,局部的非指针类型,声明后自动分配内存,不初始化值,值不确定(取决与别的程序对这块内存的操作)。局部的指针类型,声明后不自动分配内存,
    但会随机指向一个地址,所以地址不为nil
    注:
    这里我们不提倡用全局变量,而尽可能的用局部变量,假如必须用到全局变量,我们可以将这个全局变量在类(比如TForm)的成员区域声明或定义。
    对于局部变量我们则应多加小心,由其是它在定义时不像全局变量一样被初始化,在程序中不注意则会隐藏巨大的风险,因此在使用局部变量时,一定要先
    初始化,再使用!全文在这里------------------------------------------
    http://www.cnblogs.com/Stwo/archive/2011/07/11/2102816.html
      

  6.   

    主要就是 局部变量没有初始化 全局变量会被初始化局部的指针类型,声明后不自动分配内存,
    但会随机指向一个地址,所以地址不为nil全局的指针类型,声明后不自动分配内存,值为nil。在使用局部变量时,一定要先初始化,再使用!