delphi – 即使密钥存在,TDictionary.ContainsKey返回false
发布时间:2020-12-15 09:05:11 所属栏目:大数据 来源:网络整理
导读:我现在面临的问题完全让我觉得我根本不懂编程.我有一个TDictionary对象,由TDate =对组成. TEvent(自定义类).该对象用于由两个单独的应用程序共享的类(它们不通信).在一个应用程序中,以下工作正常: // Get recipes from the very event. Tmp := FCalendar.Co
我现在面临的问题完全让我觉得我根本不懂编程.我有一个TDictionary对象,由TDate =>对组成. TEvent(自定义类).该对象用于由两个单独的应用程序共享的类(它们不通信).在一个应用程序中,以下工作正常:
// Get recipes from the very event. Tmp := FCalendar.ContainsKey(D); if (Tmp) then begin E := FCalendar[D]; CopyRecipes(E); end; 另一方面,同一段代码在其他应用程序中不起作用!怎么可能?我附上了调试器中发生的事情的屏幕截图: 如您所见,密钥存在于字典中,但ContainsKey()返回FALSE. 是什么造成的? 问候, 解决方法
原因是TDate实际上只是一个TDateTime.这意味着它是一个双精度值,保持自德尔福纪元以来的天数. TDate的IDE调试提示只显示日期部分并省略时间部分.您正在比较相等性,因此两个值在同一天,但具有不同的时间组件将不相等.这是一个截图来说明:
通过使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |