问题标签 [tobjectlist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
644 浏览

delphi - 用释放它替换 TObjectList 中的对象(Delphi7)

我有一个元素很少的 TObjectList。我必须在同一个项目中用一个新的替换其中一个(不改变计数)。我执行以下操作:

我的问题是:如何释放内存中被替换的元素?帮助说“如果他的索引将被重新分配,一个 Objekt 将被释放”。命令TObj.Items[1]:= nil;够用吗?

提前感谢您提供任何信息。

0 投票
1 回答
1321 浏览

firemonkey - TObjectList 找到一个项目

我正在构建一个 TObjectList,它将存储类 tButton 的对象:

此外,在单元 untRetrieveButton 中:

我想取回存储在 ButtonObjectList 中的任意按钮,但此时我只知道按钮的名称。根据我在 TObjectList 文档中学到的内容,实现此目的的唯一方法是遍历整个 Items 列表,并将参数 aButtonName 与 TObjectList 中的按钮名称进行比较,如

这是正确的,还是有更好和最有效的方法来按名称检索任意按钮?

0 投票
2 回答
1463 浏览

delphi - 如何在没有冗余列表的情况下迭代父/子层次结构中的对象?

我有一个像这样的对象......

(还有更多,但这是基本思想)

这允许对象之间存在简单的父/子关系,即层次结构。一个是根,它包含更多的层次结构。

这一切都很好,除了我还需要迭代所有这些对象的完整列表,而不考虑层次结构。

自然地,我可以创建一个对象列表并同时维护两者......

然而,这是多余的。的每个实例TMyObject都必须同时添加/删除到每个结构中。我想摆脱需要一个主列表,而只使用层次结构对象。但我不知道如何在不遵循递归层次结构的情况下迭代所有对象。例如,像获取所有这些项目的总数这样简单的事情。

如何维护这样的对象层次结构(我可以在一个循环中迭代所有项目)不必维护两个单独的冗余结构?

例如,TTreeView.Items具有我想要的行为。您可以使用Items.CountandItems[Index]来迭代所有项目,也可以递归地迭代树层次结构。

0 投票
2 回答
457 浏览

sorting - Delphi:存储TObjectList的多个排序

我有一堆存储在 TObjectList 中的 TCoordinate。为了更快地找到坐标,必须对列表进行排序。问题是我在交替搜索 x 和 y。是否有一种存储排序结果的方法,所以我不需要一次又一次地对列表进行排序。

0 投票
1 回答
143 浏览

http - 如何重构这个基类并拆分它的功能?

我有一个TBuilder继承自TObjectList. TBuilder可以执行 ADO 相关操作并使用结果填充其内部结构。除此之外,可以通过 HTTP 调用在 Web 上完成相同的操作。返回的结果也会被解析并更新内部结构。

从这里开始,我从数据库表生成 pas 文件以模仿其结构。假设我有一个名为 Company 的表,我以编程方式生成一个TCompany对象,该对象也继承自TBuilder该对象,然后可以选择需要的对象。目前,我TCompany使用一种类型进行构造,该类型表示我希望它执行 ADO 操作或我希望它执行 HTTP 操作。TBuilder然后通常会有一个加载过程,然后根据类型,它会生成 SQL 并从数据库(或 http)加载,并在内部用结果填充自己。

现在我要做的是拆分TBuilder,以便一个单元知道如何通过 ADO 查询数据库,而另一个单元通过 HTTP 查询。我也在考虑继承这两个类TBuilder。但我遇到了挑战,TCompany因为它需要继承自TBuilder, or TADOBuilderor TDSBuilder(后两个是新单位)。如果我继承TADOBuilder它只能代表一种类型的对象。我正在努力做到这一点,以便TCompany随时可以成为两者中的任何一个。我看到您只能使用接口实现多重继承,但我对此并不陌生,无法弄清楚如何重新设计它,以便我TCompany可以同时成为两种类型的对象。

有什么想法可以解决这个问题吗?目前我被困在Delphi 6中。

这是它的外观:

这就是 Load 过程的样子,此时我正试图以更智能的方式拆分成单独的单元:

然后我会以这种方式使用该对象:

如果我更改类型,它将直接查询数据库。

0 投票
1 回答
261 浏览

delphi - List Index Out Of Bounds when deleting elements from TObjectList

I got a small but annoying problem with my Delphi School Project. At school we have to use Delphi 5 (I know, very modern) and to be able to work on it on my own without running into major annoyances, I use Delphi 7 here instead of Lazarus.

I am trying to code a small Space Invaders project with the limited OpenGL knowledge we got taught in our lessons and I am running into the problem when checking the collisions between the bullets the player shoots and the enemies. The Collision Detection Code actually works and counts hits accordingly but when it has to delete the enemy & the bullet from a List (so that they won't be rendered anymore), the List Index Out Of Bounds Error occurs.

This is the code where this error occurs. I do kinda know what this error means but I don't know how to fix it in this instance. The funny thing is, that while in the .exe of this project this error still happens, both the bullet and enemy get deleted and your score gets increased, you just have to quickly press OK after the error message appears and you can continue playing. In Delphi, the program stops after the error obviously.

Hope you guys might be able to help me out here.

0 投票
3 回答
285 浏览

c# - 如何将对象列表拆分为按元素分组的子列表(日期时间和字符串)C#

我试图根据日期时间升序和 pcName(string) 的 9 条记录基于主列表制作子列表。

我的排序子列表需要如下所示

对象列表 1:

2615,2019-11-22 16:03:22。150测试1

2615,2019-11-22 16:03:22。200 ,测试1

2615,2019-11-22 16:03:22。250测试1

2615,2019-11-22 16:03:22。300 ,测试1

对象列表 2:

2615,2019-11-22 16:03:22。350测试2

2615,2019-11-22 16:03:22。400 ,测试2

对象列表 3:

2615,2019-11-22 16:03:22。450测试1

2615,2019-11-22 16:03:22。500 ,测试1

对象列表 4:

2615,2019-11-22 16:03:22。550测试3

这个对象列表需要按照 ObjectList[0] ,ObjectList[1] ,ObjectList[2] 和 ObjectList[3] 的顺序取

我在下面提到了我的示例代码

但这仅为我提供了 3 个基于Test1、Test2 和 Test3以及 9 个子列表的子列表集(Item1)过滤器,但我想要上面的 4 个子列表。我想在哪里更改代码??请帮我

0 投票
2 回答
51 浏览

list - 在对象列表(组合列表)上使用 LINQ 获取与用户相关的信息

我有一张照片列表和一张专辑列表。我创建了一个类型对象列表来组合它们。现在我正在尝试使用 LINQ,以便可以根据 userId 和相册中包含的照片检索相册。

谁能帮助我了解如何检索上述内容?

我正在使用 LINQPAD 来做到这一点,所以我将在此处附上一张照片。

在此处输入图像描述

0 投票
1 回答
450 浏览

delphi - Delphi:调用 Delete() 后 TObjectList 不会释放对象

我有一个TObjectList<TUSBDevice>TUSBDevice我所做的课程在哪里。我尝试Delete使用作为参数传递的索引进行调用,但它只是做了什么TList.Delete():从列表中删除指针但不释放对象本身。

我放置的断点在被调用TUSBDevice.Destroy()时不会中断。Delete()我也有一个手表TObjectList,我可以看到该项目已从列表中删除,但该对象的内存地址处的内容没有被释放。

的析构函数TUSBDevice

0 投票
0 回答
112 浏览

delphi - 遍历未分类的列表项

我有许多对象的列表。此外,我还有一组使用这些对象的列表。这是一个严格的规则,任何给定的对象要么属于主列表,要么属于其他列表之一。

通常,主对象包含对象的主列表。此外,这个主要对象也有自己的概念,将这些对象组合到任何单独的任意列表中。

我希望能够查询当前不属于任何其他列表的那些对象的列表。我可以自然地假设我可以同步这些对象的专用列表,但这不是我需要处理的方式。相反,在任何给定时间,我都需要能够获取那些不属于任何这些组列表的对象的列表。

换句话说,在所有可能对象的巨大列表中,我需要能够逐个迭代那些不属于任何其他组列表的对象。确定它是否属于这些列表之一很容易。但是如何获取不属于任何组的项目列表?

具体来说,无需创建一个完整的单独列表。我打算使用这个主要的对象列表,但过滤掉那些属于任何给定对象子列表的对象。

更具体地说,我需要能够遍历不属于任何其他列表的对象列表。我不想跟踪一个完全独立的“ugrouped”列表。我宁愿使用主列表,并在列表中按顺序迭代每个对象,同时跳过那些属于子列表的对象。

例如,假设我有一个包含 100 个小部件的主列表。其中只有 30 个被分类到某个特定的组列表中。其他 70 个对象仍然需要通过查询列表来访问。

我正在寻找类似...的循环