gpt4 book ai didi

windows - 当 VAR_LOCALE_USER_DEFAULT 作为参数提供时,是什么导致 VarDateFromStr 无法使用当前用户的区域设置

转载 作者:可可西里 更新时间:2023-11-01 14:37:20 34 4
gpt4 key购买 nike

这是 that question 的跟进.

正如所问,当 VAR_LOCALE_USER_DEFAULT 作为参数提供时,是什么导致 VarDateFromStr(来自 Oleaut32.dll)无法使用当前用户的区域设置?

因此,我们的应用程序遇到了很多问题。

在有问题的系统上,如果我们执行以下代码:

procedure TForm1.Button3Click(Sender: TObject);
var V : Variant;
dte : TDateTime;
begin
V := Label28.Caption;
dte := VarAsType(V,varDate) ; //Implicitly calls VarDateFromStr
V := dte;
Label28.Caption := V; //Implicitly calls VarBStrFromDate
end;

Label28 以标题“11-05-2010”开头,每次调用之间标题将从 11-05-2010 交替为 05-11-2010。

在给定系统上,GetLocaleStr(GetThreadLocale, LOCALE_SSHORTDATE, 'm/d/yy') 返回“dd-MM-yyyy”(当前用户的短日期格式)

问题发生在 WinXP SP3 上。 (虽然我们的应用程序未在任何其他操作系统版本上使用,但不能说它是否特定于该版本)。

我最初的想法是它可能与安全相关(用户的安全性是密不可分的),但我还无法证明这一点。

最佳答案

可能的答案是用户的默认语言环境不是您的特定 o/s 实例支持的 lcid。

解决方法很简单 - 只是不要使用难看的变体。请尝试使用 DateTimeToString。附言还有助于指定您的 Delphi 版本。

关于windows - 当 VAR_LOCALE_USER_DEFAULT 作为参数提供时,是什么导致 VarDateFromStr 无法使用当前用户的区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208179/

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