Delphi 5的日期转换不适用于64位ma

Delphi 5的日期转换不适用于64位ma,delphi,Delphi,我有一个Delphi 5程序,我在Windows 8.1 32位机器上编写和编译。它从文本文件中读取日期,并使用strtodate()进行转换。这可以在32位pc上运行,但我已将.exe复制到64位笔记本电脑(Windows 7)中,我发现错误“24/4/2015”不是有效日期。两台机器的地区、语言和日期设置都相同,我能想到的唯一区别是笔记本电脑是64位的。这会影响日期转换吗?这可能是“”错误。解决方案似乎是在程序初始化代码的某个地方添加以下代码段: SetThreadLocale(GetUse

我有一个Delphi 5程序,我在Windows 8.1 32位机器上编写和编译。它从文本文件中读取日期,并使用strtodate()进行转换。这可以在32位pc上运行,但我已将.exe复制到64位笔记本电脑(Windows 7)中,我发现错误“24/4/2015”不是有效日期。两台机器的地区、语言和日期设置都相同,我能想到的唯一区别是笔记本电脑是64位的。这会影响日期转换吗?

这可能是“”错误。解决方案似乎是在程序初始化代码的某个地方添加以下代码段:

SetThreadLocale(GetUserDefaultLCID);
GetFormatSettings;

这与64位无关。您的区域设置将有所不同。从delphi代码中检查它们。另外,您确定要将区域设置作为程序的输入吗?你真的想让你的程序只在某些地方正常工作吗?那么看看ShortDateFormat和DateSeparator的值。你可以通过阅读文档来解决这个问题。它描述了StrToDate是如何工作的。如果StrToDate的行为不同,则它必须接收不同的输入。如果传递相同的字符串,那么差异一定是在其他输入中,即格式设置。另一方面,可能是我关于64位的错误@ain发现了一个bug报告,指出它是一个Windows bug。但是一个赢7的错误。无论如何,我的诊断建议是正确的。我的建议是,依赖区域设置进行转换可能不是一个好主意。谢谢你的帮助。我写的程序纯粹是为了我自己的使用,所以没有考虑分配的需要。我现在可能是我生命中的最后十年,我翻出了Delphi5的旧版本来享受编程带来的刺激!我尝试了其他地方建议的对SysUtils的更改,但没有成功,但是在笔记本电脑上将区域设置为德国,然后再设置为英语(英国)确实有效。缺陷似乎出现在Windows中,因此无法修复解决方案