相关疑难解决方法(0)

delphi变量是否默认使用值初始化?

我是Delphi的新手,我一直在运行一些测试来查看默认情况下初始化了哪些对象变量和堆栈变量:

TInstanceVariables = class
  fBoolean: boolean; // always starts off as false
  fInteger: integer; // always starts off as zero
  fObject: TObject; // always starts off as nil
end;
Run Code Online (Sandbox Code Playgroud)

这是我习惯使用其他语言的行为,但我想知道在Delphi中依赖它是否安全?例如,我想知道它是否可能依赖于编译器设置,或者可能在不同的机器上以不同的方式工作.依赖于对象的默认初始化值是正常的,还是在构造函数中显式设置所有实例变量?

至于堆栈(过程级)变量,我的测试显示单位化布尔值为真,单位化整数为2129993264,未初始化对象只是无效指针(即不是nil).我猜测规范是在访问它们之前始终设置过程级变量?

delphi variables initialization

101
推荐指数
9
解决办法
6万
查看次数

Delphi TStringList Free导致异常

考虑这个简短的Delphi程序:

procedure TfrmXQuery.FieldListFillFromDefault;
var
  field_list: TStringList;
begin
  try
    if x <> '' then begin
      field_list := TStringList.Create;
      {do some stuff with field_list}
    end;
  finally
    if field_list <> NIL then 
    begin
      field_list.Free;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我在Delphi 3中运行它时,x =''以便永远不会创建field_list,

  1. 为什么field_list <> NIL
  2. 对象未初始化为NIL
  3. 如果它不是NIL什么?
  4. 如果它没有分配,NIL我怎么不知道Free它是否?该Assigned功能并没有告诉我:if Assigned(an_object)相当于if an_object = NIL

delphi delphi-3

4
推荐指数
1
解决办法
1482
查看次数

标签 统计

delphi ×2

delphi-3 ×1

initialization ×1

variables ×1