问题标签 [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.
delphi - Delphi TDictionary :当具有相同的键时,值会自动替换
我正在使用德尔福 XE5。这是我的代码的简历,下一个代码有效,但我的代码中必须有一些东西会破坏正常行为:
现在另一个单位:
那是我的代码简历,我可以放我所有的代码,因为太大了,但我想知道我可以在哪里搜索来解决这个问题。我不是不容易,也许我不是唯一一个有这个问题的人,也许是使用中的某个类,类变量,有一些东西会导致该字典中出现内存问题,但无法找到它。
delphi - delphi 使用记录作为 TDictionary 中的键
可以在 TDictionary 中使用一条记录作为 Key 值吗?我想根据字符串、整数和整数的组合来查找对象。
...
...
这将返回对象 2。
delphi - TDictionary 中的访问冲突
我刚刚写了一个非常简单的类来测试 Delphi XE8 中的 TDictionary<> 类。
当我尝试显示我添加的记录时,它给我带来了访问冲突错误,我不明白为什么?
这是我的课
然后我正在使用此代码对其进行测试:(带有 1 个 TButton 和 1 个 TMemo 的表单)
我尝试了很多方法:MyRec.Items.Count 或 MyRec.Values.Count 或 MyRec.Items.Values.count ......我总是有一个错误,我不明白为什么?
delphi - 按整数键对TDictionary进行升序排序
如何在 Delphi 2009 中按整数键按升序对 TDictionary 进行排序?
delphi - Delphi 字典释放
我实现了以下类:
然后我有一个全局变量:
在OnFormActivate
过程中我初始化procedures
变量:
然后在OnFormClose
我释放它:
我的代码会泄漏内存吗?如果是这样,释放的正确方法是dictionary
什么?据我所知,迭代不是好主意。
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);
我做错了什么?
delphi - GetHashCode 好的做法?
对于一个 Delphi 项目(使用 RAD Studio XE7 构建),我想创建一个画笔字典。每个字典项都包含一个 TMyBrush 对象作为键,描述要检索的画笔,以及一个 GDI+ 画笔作为值。
TMyBrush 类包含 3 个字段
- 确定画笔种类的枚举类型(实心、渐变、...)
- 一个 TBrushInfo 类,用于描述画笔内容(颜色、环绕模式……)
- 表示钳位字段的 TRect
在我的字典中,我想根据他的特征而不是他的实例来检索画笔。例如,我想通过创建本地 TMyBrush 实例,将其配置为黑色实心,并使用 TryGetValue() 函数获取匹配的 GDI+ 值,从我的字典中获取黑色实心画笔。为此,我创建了一个 TMyBrushComparer。
编写 Equals() 函数对我来说不是问题。但是我不知道编写 GetHashCode() 函数的最佳做法是什么。我倾向于编写这样的函数:
但是我觉得这不是一个很好的做法,对吗?那么,为我的 TMyBrushComparer 编写一个好的 GetHashCode() 函数的最佳实践是什么?
问候
multithreading - Delphi 只读泛型,如 TDictionary和 TList线程安全吗?
我可以仅在单元初始化中在通用列表或字典中添加项目,然后将其用作多个线程的只读吗?
我阅读了一个线程安全的主题TList<T>
和另一个TDictionary<T>
不是线程安全的主题。两者之间会有什么区别?
delphi - Delphi 字典保存/加载。TDictionary 不可序列化?
TDictionary : SaveToFile / LoadFromFile
多么优雅的解决方案!首先,一切都按预期运行。
内容以看起来正确的 JSON 格式保存到文件中。但是重新加载文件后,出现了问题:
测试如下。所有的荣耀都结束了。这是代码,包括注释:
看来Delphi(Berlin 10.1),不能序列化Dictionary!如果这是真的,那真的让我很伤心。我相信还有很多其他的。或者附加的代码有什么错误吗?