问题标签 [tlist]

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 投票
1 回答
629 浏览

sorting - Delphi中如何使用类TList的方法Sort

TList 类的方法 Sort 是如何工作的?此方法是否仅以列表元素仅上升/下降的方式排序?请看下面的代码。

现在的问题是,在我编译代码之后,它运行良好,列表以元素升序的方式排序。但我不明白以下行:

item1, item2 的指针指向什么?他们不需要初始化吗?

0 投票
2 回答
117 浏览

delphi - 如何将 SQL 查询中的项目添加到 TListView

我想使用 for 循环将查询中的项目添加到 TListView 中。但是我从 ListViewShifts.Items.Add() 行中收到一条错误消息,提示“实际参数太多”。从查询中添加到列表的正确方法是什么?

0 投票
0 回答
64 浏览

delphi - 程序内存不足

我创建了一个 ObjectDictionary:

但:

不会释放内存,因此程序运行内存不足。

我试过了:

然后没有成功:

现实世界的程序必须对来自空间数据库(PostgreSQL/PostGIS)的大约 150 亿条地震记录进行并行处理(使用新的 PPL 库),因此我必须在不溢出内存的情况下分批处理。

演示该问题的简化程序:

我希望程序应该在每批之后释放 TObjectDictionary 对象使用的内存,以供下一批使用。

0 投票
1 回答
657 浏览

delphi - 如何在 Delphi 调试期间查看通用 tList

我使用 Delphi 10.3.1 COMMUNITY 版本,在调试项目时无法查看通用 tList。

我知道最新版本的 Delphi 不支持允许查看通用 tList 的旧类型调试功能。所以我在下面的代码中使用了 tList.List 来评估 tList。

tList<tRecord>.List我可以调查它,但不能在tList<Integer>.List.

在此处输入图像描述

tList<Integer>在调试过程中如何查看?

0 投票
1 回答
122 浏览

delphi - 可以访问对象属性的Delphi 7 TListSortCompare

我正在编写一个拥有 Tlist of records 的自定义组件。问题是:用于对列表记录进行排序的 TListSortCompare 函数如何访问组件的字段?编译器拒绝对象方法作为列表比较器,并且在组件的单​​元中还没有创建实例来访问。

谢谢韦尔

0 投票
0 回答
582 浏览

class - Delphi如何在类定义中创建Tlist时避免访问冲突

我使用定义为的类型 Tlist 创建了一个表示二维字符串数组的类

但是,当我调用构造函数时出现访问冲突。构造函数所做的只是使用创建列表

我还没有制作很多课程,但是这个课程的完整代码在这篇文章的底部。

请有人能告诉我我做错了什么会导致类构造函数中的访问冲突吗?

我试过的

我看过这个 SO 线程,但它并没有真正回答我的问题。

我还尝试将整个事情变成一个简单的单元而不是一个类,并将列表类型和变量定义为全局变量,例如

然后,如果我在初始化中创建列表

并在最终确定中释放它

然后它工作正常,我可以将它用作具有各种其他过程和函数的二维字符串数组,例如类单元中的那些。

我也试过移动

到课堂内部而不是外部,但仍然出现错误。

这是该课程的完整代码

主窗体像这样使用这个类

0 投票
1 回答
450 浏览

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

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

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

的析构函数TUSBDevice

0 投票
1 回答
101 浏览

delphi - TList 如何从 Frame 的 TEdit/TCombobox 获取输入值

主窗体包含TTabControl可以动态创建一些选项卡。每当我添加一个新选项卡时,都会创建一个框架并将其添加到新选项卡中。最后,我会将所有这些保存TTabItemTList.

这是我的框架:

最后,如何获取框架中的(姓名)和(性别)值,并以主窗体打印出来?如果假设我创建了 4 个选项卡,每个选项卡都有自己的框架,我怎样才能从不同的框架中获取值?我对 Delphi 非常困惑和新手。

0 投票
1 回答
208 浏览

arrays - Delphi 数组或列表未按预期在 for 循环中更新

我有一个循环更新一维数组(Arr2)中的值,然后将数组添加到列表(ResultPnts):

最初我在 for 循环开始时没有调用 setlength,在这种情况下,适当数量的项目被添加到 resultPnts,但它们都是相同的(就像分配给 Arr2.Pnts[0] 的逻辑一样并且 Arr2.Pnts[1] 在循环的每次迭代中都没有被调用)

我已经通过添加 setlength 调用解决了这个问题,但我真的不明白为什么这是必要的。我很想了解这里发生了什么,以便将来可以更可靠地避免此类问题。

谁能向我解释为什么没有循环中的 setlength 代码不能按预期工作?

0 投票
1 回答
263 浏览

delphi - TList 内存泄漏。盒

考虑一个简单的 TMyObject 类,它包含一个字符串数组 [0..9](描述)和一些其他属性(本示例省略)。在某个时刻,我想从 FMyList (TList<TMyObject>) 中删除所有“空”对象(即所有 10 个字符串都是空的)。为此,我将 Pack 方法与 IsEmpty 函数一起使用:

最初我(错误地)假设 Pack 也会释放(释放)这些对象。事实并非如此,因此上述代码会导致内存泄漏,从而使移除的 TMyObjects “悬空”。

不幸的是,Pack 上的文档有点稀疏。如何正确使用这个方法,保证一个Pack之后,不仅对象从TList中被移除,而且对象也被正确释放?