问题标签 [tdictionary]

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 回答
1646 浏览

delphi - Delphi TDictionary :当具有相同的键时,值会自动替换

我正在使用德尔福 XE5。这是我的代码的简历,下一个代码有效,但我的代码中必须有一些东西会破坏正常行为:

现在另一个单位:

那是我的代码简历,我可以放我所有的代码,因为太大了,但我想知道我可以在哪里搜索来解决这个问题。我不是不容易,也许我不是唯一一个有这个问题的人,也许是使用中的某个类,类变量,有一些东西会导致该字典中出现内存问题,但无法找到它。

0 投票
3 回答
5382 浏览

delphi - delphi 使用记录作为 TDictionary 中的键

可以在 TDictionary 中使用一条记录作为 Key 值吗?我想根据字符串、整数和整数的组合来查找对象。

...

...

这将返回对象 2。

0 投票
2 回答
1004 浏览

delphi - TDictionary 中的访问冲突

我刚刚写了一个非常简单的类来测试 Delphi XE8 中的 TDictionary<> 类。

当我尝试显示我添加的记录时,它给我带来了访问冲突错误,我不明白为什么?

这是我的课

然后我正在使用此代码对其进行测试:(带有 1 个 TButton 和 1 个 TMemo 的表单)

我尝试了很多方法:MyRec.Items.Count 或 MyRec.Values.Count 或 MyRec.Items.Values.count ......我总是有一个错误,我不明白为什么?

0 投票
1 回答
10609 浏览

delphi - 按整数键对TDictionary进行升序排序

如何在 Delphi 2009 中按整数键按升序对 TDictionary 进行排序?

0 投票
1 回答
5438 浏览

delphi - Delphi 字典释放

我实现了以下类:

然后我有一个全局变量:

OnFormActivate过程中我初始化procedures变量:

然后在OnFormClose我释放它:

我的代码会泄漏内存吗?如果是这样,释放的正确方法是dictionary什么?据我所知,迭代不是好主意。

0 投票
1 回答
897 浏览

delphi - 在 Delphi 中使用 TObjectDictionary 时如何避免 EInvalidPointer 错误?

程序product information datas通过窗口接收消息。在过程中处理的传入数据TProductInstance.PutProductData

产品信息包含日期、名称、价格。我想将数据存储为TObjectDictionary. 键是与产品相同的日期,值是与TObjectList 一样的产品信息数据列表。此外,我只想在最近 7 天内维护数据。顺便说一句,当我从 TObjectDictionary 中删除项目进行维护时,会出现如下错误。

第一次机会例外,价格为 75214598 美元。
带有消息“无效指针操作”的异常类 EInvalidPointer。处理 product.exe (3848)。

这是由FProductDictionary.Remove(StringKey);.

如何EInvalidPointer在维护最新的 7 天数据时避免错误?

更新

更新的代码出现EInvalidPointer错误FProductDictionary.Remove(StringKey);我做错了什么?

0 投票
1 回答
1067 浏览

delphi - GetHashCode 好的做法?

对于一个 Delphi 项目(使用 RAD Studio XE7 构建),我想创建一个画笔字典。每个字典项都包含一个 TMyBrush 对象作为键,描述要检索的画笔,以及一个 GDI+ 画笔作为值。

TMyBrush 类包含 3 个字段

  • 确定画笔种类的枚举类型(实心、渐变、...)
  • 一个 TBrushInfo 类,用于描述画笔内容(颜色、环绕模式……)
  • 表示钳位字段的 TRect

在我的字典中,我想根据他的特征而不是他的实例来检索画笔。例如,我想通过创建本地 TMyBrush 实例,将其配置为黑色实心,并使用 TryGetValue() 函数获取匹配的 GDI+ 值,从我的字典中获取黑色实心画笔。为此,我创建了一个 TMyBrushComparer。

编写 Equals() 函数对我来说不是问题。但是我不知道编写 GetHashCode() 函数的最佳做法是什么。我倾向于编写这样的函数:

但是我觉得这不是一个很好的做法,对吗?那么,为我的 TMyBrushComparer 编写一个好的 GetHashCode() 函数的最佳实践是什么?

问候

0 投票
1 回答
894 浏览

json - 为什么反序列化的 TDictionary 不能正常工作?

我尝试使用标准delphi序列化程序序列化/反序列化标准delphi容器。

有一种方法可以将对象转换为 JSON,反之亦然;

线:

没有正确创建字典。以下是构造函数创建的 dict 外观:[字典创建正确[1]

这是反序列化创建的字典: 字典反序列化错误

我该如何解决?

编辑:这是 JSON 内容

0 投票
1 回答
741 浏览

multithreading - Delphi 只读泛型,如 TDictionary和 TList线程安全吗?

我可以仅在单元初始化中在通用列表或字典中添加项目,然后将其用作多个线程的只读吗?

我阅读了一个线程安全的主题TList<T>和另一个TDictionary<T>不是线程安全的主题。两者之间会有什么区别?

0 投票
1 回答
1438 浏览

delphi - Delphi 字典保存/加载。TDictionary 不可序列化?

TDictionary : SaveToFile / LoadFromFile

多么优雅的解决方案!首先,一切都按预期运行。

内容以看起来正确的 JSON 格式保存到文件中。但是重新加载文件后,出现了问题:

测试如下。所有的荣耀都结束了。这是代码,包括注释:

看来Delphi(Berlin 10.1),不能序列化Dictionary!如果这是真的,那真的让我很伤心。我相信还有很多其他的。或者附加的代码有什么错误吗?