Delphi - > Delphi prism,如何使用数组记录?

0 arrays delphi record oxygene delphi-prism

我正在学习Delphi Prism,我没有找到如何用它编写以下代码:

type
  TRapportItem = record
   Label : String;
   Value : Int16;
   AnomalieComment : String;
  end;

type 
  TRapportCategorie = record
    Label : String;
    CategoriesItems : Array of TRapportItem;
  end;

type 
  TRapportContent = record
    Categories : array of TRapportCategorie;
  end;
Run Code Online (Sandbox Code Playgroud)

然后,在某个地方,我尝试将项目放在数组中:

rapport.Categories[i].Label:=l.Item(i).InnerText;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有人可以点燃我吗?

谢谢!

Bar*_*lly 5

  • 你没有具体说明"什么不起作用".您应该在这样的问题中包含错误.
  • 数组是引用类型,它们以值开头nil.它们需要在访问元素之前进行初始化.

您可以与new运营商一起执行此操作:

rapport.Categories = new TRapportCategorie[10]; // 0..9
Run Code Online (Sandbox Code Playgroud)
  • 数组是一种相当低级的类型.通常最好与之合作List<T>.

所以你要声明:

Categories: List<TRapportCategorie>;
Run Code Online (Sandbox Code Playgroud)
  • 但是列表也需要使用new运算符进行初始化.此外,修改包含值类型的列表上的索引器的返回值将修改副本,而不是原始副本,这将导致下一个点.
  • 记录通常不是表示数据的最佳数据类型,因为它们不是引用类型; 最终修改数据副本非常容易,而不是原始数据.通常最好使用类,您可以在构造函数中放置所有初始化代码(例如分配数组或列表).