gpt4 book ai didi

delphi - 日期格式故障的发生-可能的原因,以及预防或否定的最可能方法?

转载 作者:行者123 更新时间:2023-12-03 18:36:42 26 4
gpt4 key购买 nike

我正在使用我的前任编写的Delphi 7程序,他一直在其中执行的一项操作是重置DateSeparator值和ShortDateFormat值。 (分隔符为“ /”,格式为“ YYYY-MM-DD”。)有问题的程序正在尝试对照数据库检查一组记录,根据需要对其进行更新,然后将其写到手持式条形码文件中扫描器。此外,可以选择一组记录并将其显示为报告,方法是将它们的键值从ShellExec字符串内传递到实际运行该报告的php页面。

通常,该程序可以正常运行,没有任何问题。但是,在某些机器上(似乎特定于运行IE9的Win7盒),如果首先运行报告(从ShellExec调用中打开IE),则试图验证记录的部分代码将以错误的日期结尾向上-而不是显示为Delphi ShortDateFormat调用指定的YYYY-MM-DD或Win7默认格式的M / d / yyyy,它们将在输出文件中显示为“ ddyyyymm”之类的小字。 (代码将在写入文件之前剥离分隔符。预计将缺少分隔符。)

考虑到发生此问题的怪异条件,我怀疑有关打开IE9的某些事情明确地覆盖了程序重置日期格式的尝试。有人听说过这样的事吗?如果是这样,我有什么解决方案?我无权要求客户在使用此程序的每台计算机上进行IE升级,而且我不确定这是否能真正解决问题。我担心我将不得不将格式重置为程序中所有可能的功能和过程的初始部分,并严重希望我可以做的事情不会那么耗时且不会出错-容易

最佳答案

尝试添加

Application . UpdateFormatSettings := false;




 Application.Initialize;


在DPR文件中。

操作系统有时会向所有应用程序发出WM_WININICHANGE消息,说某些全局参数(例如用户的区域设置)已更改。可以触发此操作的因素有很多,通常这是有道理的,但有时可能是个谜。当Delphi应用程序收到此消息时,它将重新初始化格式设置。这通常是一件好事。假设您有一个时钟应用程序,它使用DateTimeToStr(Now)每秒显示一次日期和时间。用户进入Windows区域设置并更改其日期格式。 Windows发出WM_WININICHANGE消息,并且程序的设置会自动更新。下次您的时钟显示更新时,它将使用新的正确设置。

但是,如果要使用特定于应用程序的值覆盖FormatSettings,则可能是个大问题。突然之间,您辛辛苦苦难以精确设置的设置被丢弃,并被默认设置取代。

您可以通过将UpdateFormatSettings设置为false来防止这种情况。

您的应用程序取决于设置时的FormatSettings。通常,一切正常。我的假设是,那些机器上正在发生某些触发WM_WININICHANGE消息的事件。

关于delphi - 日期格式故障的发生-可能的原因,以及预防或否定的最可能方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23230335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com