【问题标题】:How to retrieve multidimensional a class element containing multidimensional arrays from an arraylist如何从arraylist中检索包含多维数组的类元素
【发布时间】:2009-09-30 11:27:32
【问题描述】:

我目前在 Vista 下使用 CodeGear Delphi 2007。 我的应用程序在一些相当繁重的计算过程中返回内存不足错误。 .exe 文件从 150 Mb 增长到惊人的 2 Gb(!哈哈)

关于这个问题:

1) 我正在将一些数组更改为 arraylist 但是它给了我一些相当困难的问题来解决(见下面的示例)

2) 使用多维结构并需要对代码进行少量更改的建议非常感谢!

现在称呼成员的旧方式是:

function TResults.GetTriangleA(ComNr, triangleA, PtNr : integer) : single;
  Begin
  try
    result := ListTriangleRes[TriangleA - 1].GetA(ComNr, PtNr);

还有 TriangleResult 类:

TTriangleRes = class(TResults)
private
IndexPoint1, IndexPoint2, Indexpoint3 : integer; 
MyA : array of array [1..3] of single;  
MyB : array of array [1..3] of single; 

在这里,我正在尝试使用新的arraylist,但到目前为止还不是很成功

function TResults.GetTriangleVz(ComNr, triangleA, PtNr : integer) : single;
Var
  MyTriangleRes:    TTriangleRes;
  MyObj:            Tobject;
begin
  MyTriangleRes:=  TTriangleRes.Create ;
  try
    MyObj := ListTriangleRes[TriangleA - 1] ;
    result := MyObj <<<<?????? how to>>>>MyTriangleRes.GetVz(ComNr, PtNr);

马克

爱德华

【问题讨论】:

    标签: delphi arraylist tobject


    【解决方案1】:

    据我所知,ArrayList 是一个没有在 Delphi 中使用的 Java/C# 集合。我们的等价物称为 TObjectList。 (或 TList,但如果您正在处理对象,最好使用 TObjectList。)这是您正在使用的吗?我假设你是。

    看来您的问题出在对象类型上。有两种方法可以从具有正确类型的列表中获取对象。您可以使用普通列表并对其进行类型转换,或者如果您有 D2009 或 D2010,则可以使用通用列表。

    第一种方式,使用 TObjectList:

    MyTriangleRes := ListTriangleRes[TriangleA - 1] as TTriangleRes; //type-safe cast
    

    第二种方法:将 ListTriangleRes 声明为 TObjectList&lt;TTriangleRes&gt;,并将 Generics.Collections 添加到您的 uses 子句中。这为您在编译时而不是运行时提供类型安全,因为编译器将确保只有 TTriangleRes 对象进入和退出列表。

    无论哪种方式,都不需要中间 TObject 变量。

    【讨论】:

    • 第二种方式只在D2009+上可用,Edward用的是D2007
    【解决方案2】:

    我不太确定您要做什么,但您的最后一个代码不应该是 MyTriangleRes :=ListTriangleRes[TriangleA-1],然后是 Result:=MyTriangleRes.GetVz(ComNr,PtNr) 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2015-08-07
      • 1970-01-01
      • 2017-03-01
      相关资源
      最近更新 更多