问题标签 [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 回答
244 浏览

multithreading - Delphi2006 - 是否有带有 TMultiReadExclusiveWriteSynchronizer 的 TList?

我有一个多线程的外部应用程序,这个应用程序正在使用我的自定义 dll 从那个线程做一些事情。
在这个 dll 中,我有 2 个函数可以读取和写入一些数据到TList.
我需要这些线程可以自由读取该列表,但一次只能写入一个,其余的必须等待他们的时间写入。

我的问题:
- BDS 2006 中是否有一个TList具有 TMREWSync 功能的组件,或者
- 也许您知道我可以在我的应用程序中使用的任何免费的第三方组件,或者
- 也许您有一些TList可以执行上述操作的自定义代码。

编辑:我需要类似TThreadList.LockList但仅用于写入该列表的东西。

谢谢你的帮助。

0 投票
1 回答
663 浏览

c++ - Delphi typcast tlist 项 C++ 方法

嗨,我有一个关于某些类型转换方法的问题。我正在将一些 Delphi 文件翻译成 C++。我有从 TList 派生的类的 delphi 声明,它是其他派生类的基类。

这是两个基类 TBaseItem 和 TBaseClass。所以这里声明了从 TBaseItem 派生的新类 TchildItem 和从 TBaseClass 派生的 TChildClass。TChildItem 是覆盖方法 SomeMethod,更重要的是 TChildtClass 正在覆盖属性 Items,现在我们正在返回 TParentItem 项 insted 的 TBaseItem。

通过这个例子,我想展示派生类和覆盖属性是多么容易。从列表中获取正确类型的项目只需调用父(基)属性 Item 并将其类型转换为正确类型即可。这是德尔福方法。

我想知道如何将这部分代码翻译成 C++。目前我声明了一个新的基类,它不是从任何类派生的,它有 public var Items 是

然后使用

这意味着我想访问父级的(TBaseClass)公共变量,例如那个向量项并将它的类型转换为正确的类型......我的第一印象是我可能会使用 Delphi 方法进入错误的方向。

你有什么建议?我该怎么办?

非常感谢!

0 投票
3 回答
2854 浏览

arrays - 添加/删除单元格时保持数组排序的最佳方法

使用的 Delphi 版本:2007

你好,

我有一系列 Tecord

我正在寻找一种对Infos数组进行排序的方法,并找到了我认为是一种聪明的方法。基本上,我有一个 TList,我在其中添加指向数组每个单元格的指针;然后,我使用自定义排序功能对它们进行排序。然后,此 TList 用于在设置为 的情况下显示已排序的TListView单元OwnerDatatrue

现在,我希望能够在保持指针排序的同时添加和删除单元格。现在,这是我的问题。

  1. 当我添加一个单元格时,我必须调用整个指针列表SortedInfo.Sort(@CompareInfo);
  2. 当我删除一个单元格时,我必须清理我的 TList,重建指针列表并再次对其进行排序。

现在,我没有大量的单元格,所以没有性能问题。但是,在我删除单元格时重建指针并在每次数组更改时对所有指针进行排序对我来说似乎是错误的。如果我的问题看起来很愚蠢,我很抱歉,但我正在努力学习。

有没有正确的方法来保持我的数组排序?我不确定我应该如何“单独”对新单元格进行排序,或者我应该如何在删除单元格时保持指针有效......

0 投票
2 回答
1981 浏览

delphi - 将 ListBox 中的字符串转换为 List

TListBox 组件包含一组行(字符串)。如何将此集合作为列表 TList ?下面的代码示例没有给出预期的结果。(Сode 无法编译)

是否可以在不使用循环的情况下做到这一点?谢谢!

0 投票
3 回答
95 浏览

c# - 排序或排序 TList

我有一个TList<SKU>我想按 SKU 对象 ID 排序的。以下是从数据库中获取列表的方式(使用的第三方供应商的基本代码)。

TList<SKU> skuList = skuAdmin.GetByProductID(this.itemId);*itemId 是一个整数值,表示产品 ID。

SKUID我想根据每个人拥有的属性对这个列表进行排序SKU。我一直在查看分类和订单,List<>但我似乎找不到可以根据我的需要定制的解决方案。

这:使用 ThenBy 对 TList<object> (ntiers) 进行排序可能是我能找到的最接近我想做的事情。

我想要做的是返回SKU最低的列表项,SKUID任何人都可以帮助我吗?

0 投票
3 回答
2892 浏览

delphi - TCategoryPanelGroup, delete panel

Working on Delphi XE2, no 3rd party components/suites, nothing fancy.

Got a TCategoryPanelGroup (catPanGroup) on a form. I can easily add as many TCategoryPanel(s) as I need with:

I don't care about the panel order, don't care (yet) how it looks, I can insert labels, textboxes and buttons inside these panels, they work as they should, no problems. I exit the application and no (apparent) leaks.

However, the application its a bit dynamic and need to remove a panel, lets say the last one. So, my immediate reaction is to:

Or:

Even:

And when things were not working I:

So ¿what's the error? On some cases there is no error but when I exit the application I always get an exception (access violation). ¿Maybe comes from the controls that I inserted inside the TCategoryPanel? Nope, I still get access violations without creating any controls on those panels. And the exception only pops when I delete (or try to delete) a panel. Will try at home on XE3 shortly.

¿Is anybody able to create and delete a TCategoryPanel on run-time?

0 投票
3 回答
4103 浏览

arrays - 包含动态数组的通用记录列表

我有一个通用的记录列表。这些记录包含一个动态数组,如下所示

然后我创建列表并设置数组长度,如下所示

然后我更改数据MyArr,我也更改MyRec.Name并将另一个项目添加到列表中

MyRec.MyArr将第一项添加到列表后发生更改时,MyArr存储到列表中的项也会更改。但是其他记录字段没有。

我的问题是如何防止更改MyRec.MyArr反映在已存储在列表项中的数组上。

我需要声明多条记录吗?

0 投票
1 回答
1347 浏览

delphi - 铸造 TList到 TList

我有一个 type 列表TList<TForm>。我需要转换它并TList<TObject>像这样使用它:

该示例按预期工作,但是可以在通用列表之间进行这样的转换吗?这会导致一些数据结构损坏等吗?我仅将它用于循环 ( DoGetEnumerator) 目的和一些字符串检查,即我不会添加/删除项目。

真正的功能稍微复杂一点。它参考listTTValue. 主要目标是不链接FMX.Forms到我的单位。

更新: 为什么 TGeneric<Base> 和 TGeneric<Descendant> 类型不兼容?

0 投票
2 回答
976 浏览

multithreading - In Delphi are reads on TList thread safe?

I've built a simple logging class and want to confirm that it is thread safe. Basically the Log, RegisterLogger and UnRegisterLogger will be called from different threads. Log will be called alot (from many different threads) and RegisterLogger and UnRegisterLogger infrequently.

Basically my question can be boiled down to is: "Are reads on TList<x> thread safe?", that is to say can I have multiple threads accessing a TList at the same time.

IExecutionCounterLogger is an interface with a Log method (with the same signature as TExecutionCounterServer.Log)

As a bit more background, this is a follow on from this question. Basically I've added some instrumentation to every method of a (DCOM) DataSnap server, also I've hooked into every TDataSnapProvider OnGetData and OnUpdateData event.

0 投票
1 回答
2432 浏览

delphi - 带有子列表的记录的通用 TList?

我想在 Delphi XE5 中使用带有子列表的通用 TList 记录:

无法对记录的字段进行分配:

或者

将导致编译器“无法分配左侧”错误。

另请参阅:如何修改 TList<record> 值?

以下解决方法有效:

由于性能问题,我想避免将数据复制到临时 AMyrecord。我宁愿直接访问记录字段和子列表。

处理这个问题的最佳方法是什么?