代码之家  ›  专栏  ›  技术社区  ›  Ken Bourassa

当var_locale_user_default作为参数提供时,什么会使vardatefromstr无法使用当前用户的区域设置?

  •  4
  • Ken Bourassa  · 技术社区  · 14 年前

    这是后续行动 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_shortdate,'m/d/yy')返回“dd-mm-yyyy”(当前用户的短日期格式)

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

    我最初的想法是它可能与安全相关(用户的安全是气密的),但我还不能证明它。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sean B. Durkin    14 年前

    可能的答案是,用户的默认区域设置不是特定O/S实例支持的LCID。

    周围的工作很容易-只是不要使用丑陋的变种。尝试datetimeToString。 P.S.还可以帮助您指定Delphi的版本。