问题标签 [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 投票
6 回答
5918 浏览

delphi - 从 TObjectList 中提取对象

我有一个 OwnsObjects = true 的 TObjectList。它包含相当多的对象。现在我想从该列表中删除索引 Idx 处的对象,而不释放它。

提取方法是唯一的选择吗?

ExtractedObject := TheList.Extract(TheList[Idx]);

所有其他方法似乎都释放了该对象。我正在寻找更高效的东西,它不会每次都进行线性搜索,因为我已经知道对象的索引。有点像超载...

ExtractedObject := TheList.Extract(Idx);

...不存在的。

0 投票
4 回答
1862 浏览

delphi - 为什么 TList.Remove() 会产生 EAccessViolation 错误?

为什么在执行下面的代码时会引发 EAccessViolation?

0 投票
1 回答
653 浏览

delphi - 替换 Delphi Prism 中的 TList。

我正在将用 Delphi 2007 编写的应用程序迁移到 Delphi Prism,这是替换 TList 类的最佳选择?

提前致谢。

再见。

0 投票
2 回答
1071 浏览

delphi - 奇怪的 EListError 发生(访问变量定义的索引时)

我有一个存储一些对象的 TList。现在我有一个函数可以对该列表执行一些操作:

现在,真正奇怪的是,使用任何正确的索引访问 fMgr.Windows 会导致 EListError ......但是,如果我对其进行硬编码(例如,将 AIndex 替换为值 0 或 1)它可以正常工作。我尝试调试它,该函数被调用了两次,参数为 0 和 1(如预期的那样)。

当 AIndex = 0 时,评估 fMgr.Windows[AIndex] 会导致 $someAddress 处的 EListError,而评估 fMgr.Windws[0] - 返回正确的结果...

更奇怪的是,即使有 EListError,该函数也会返回正确的数据......并且不显示任何内容。只是关于关机时两个 EListError 内存泄漏的信息(使用 FastMM)

有什么想法可能是错的吗?!

在此先感谢

0 投票
1 回答
6491 浏览

delphi - 如何对 Typed Tlist 进行排序

我有许多类型化的 TList,但在排序时遇到了问题

通常,对于无类型的 TList,我会有一个函数,例如:

列表将调用哪个

但是,我在当前的应用程序中决定将 TLists 锁定为某些指针类型,因此在上面的示例中,我们将 JobList 声明为:

现在当我打电话

我收到“参数不足”错误。

有任何想法吗?

我比较过,如果我在无类型的“标准”TList 上使用上面的排序函数,那么它将正确编译......

0 投票
1 回答
1198 浏览

delphi - 在 Delphi TDictionary 中,我的 Value 对象插入为 null

我正在使用 Delphi 9 的 TDictionary 泛型类。我的 TDictionary 看起来像这样:

而且,所以我像这样初始化 TDictionary:

我有一个 TList,我也在初始化,这样我就可以用它来填充 TDictionary。我正在循环一些用于填充 TList/TDictionary 的文件数据,并且我试图重新使用相同的 TList 作为值插入到 TDictionary 中。在第一次插入 TDictionary 时,项目的 TList 值存在并且其中包含数据。在第二次和随后的迭代中,TList 值全部为零。

在我看来,这一切都是通过参考来完成的。如何按值而不是引用将 TList 添加到我的 TDictionary?

0 投票
2 回答
852 浏览

delphi - Delphi:TList of Frames 的问题

我在使用 TScrollBox 中包含多个帧(通常为 25 个)的界面时遇到问题。

有两个问题,我希望一个是另一个的结果......

背景:

当应用程序启动时,我创建了 25 个帧,每个帧包含大约 25 个帧。20 个控件,然后填充默认信息。然后,用户可以单击控件以将搜索限制为信息子集,此时我释放并重新创建我的框架(因为搜索可能返回 < 25 条记录)

问题:

如果我在初始搜索后退出应用程序,则大约需要。5秒返回Delphi。在第二次搜索(并处理/重新创建帧)之后,大约需要。20 秒)

虽然我可以重写应用程序以仅创建一次框架,但我想了解发生了什么。

这是我的创建例程:

这是我的删除例程:

我错过了什么?

0 投票
1 回答
770 浏览

c# - 将数组(或 TList)从 C# 代码传递到外部 javascript?

我需要将 IP 地址列表(或数组)和来自 C# 代码的其他信息传递给外部 .js 中的 javascript 函数。

此外,这个列表可能很长(1000 多个项目).. 最有效的方法是什么?你能提供一个小例子吗?我应该使用json序列化吗?

0 投票
8 回答
4637 浏览

arrays - 如果可以估计,TList、TObjectList 和普通数组之间的性能差异有多明显?

*总结:

请查看 Delphi 专家的知识渊博的评论。特别是对我来说,我会尝试按照 David 的建议使用旧的 TList/TObjectList,并按照 A.Bouchez 的建议使用 hard-cast 和 TObjectList.List 属性。将来重构时我会尝试 TDynArray。

==================================================== ====================

假设我有一个TAtom在以下代码中定义的类。目前,在运行时大约有hundreds多达TAtom 实例。在运行时,我需要对所有现有的 TAtom 实例进行简单的浮点数学运算,超过每秒次数。 thousandsstored in a dynamic arrayTAtom.X/Y/Z30

现在,我需要在运行时添加 TAtom 实例的adding能力。看来我的选择是(1)请求一个大数组;(2)坚持动态数组,手动设置长度;(3) 切换到常规TList;(4) 切换到常规TObjectList。 insertingdeleting

除非有必要,否则我想避免(1),因为我必须更改很多函数签名。(2) 看起来也不好,因为 TList/TObjectList 似乎是为这项任务而生的。但是,因为需要使用常规 TList/TObjectList 进行类型转换,所以有人可以评论可能的性能损失吗?我的意思是,最好在我重写代码之前估计性能负担。如果性能会明显下降,我可以使用其他技术吗?

此外,我想知道使用 TList 和 TObjectList 之间是否存在性能差异?

0 投票
2 回答
657 浏览

delphi - 在 TList 中删除 TList

我正在尝试在 onDestroy 事件中释放 Tlist 中的 Tlist,而 FastMM4 引发访问冲突错误。这是代码片段。

我在 TSignal(SignalList.items[x]).Free 处收到访问冲突错误;线。在释放 SignalList 项目之前释放 AlarmList 项目会引发访问冲突错误,但为什么?

更新:我在 Windows XP 上使用 Delphi 7.0。实际的 FastMM4 消息如下。


FastMM 检测到尝试在已释放对象上调用虚拟方法。现在将引发访问违规以中止当前操作。

释放对象类:TList

虚法:销毁

虚拟方法地址:427CF0

分配编号为:80055

其次是大量的内存转储。


根据这个 FastMM4 错误,如果你在另一个对象中释放一个对象,你也会自动释放所有者。我知道这不可能是真的,但如果我错了,请纠正我。