這是從that question開始的後續操作。當VAR_LOCALE_USER_DEFAULT作爲參數提供時,什麼使VarDateFromStr無法使用當前用戶的區域設置
問:當VAR_LOCALE_USER_DEFAULT作爲參數提供時,VarDateFromStr(來自Oleaut32.dll)無法使用當前用戶的Locale?
因爲這個,我們的應用程序遇到了很多問題。
在具有問題的系統中,如果我們執行以下代碼:
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開始的「2010年11月5日」的字幕,字幕會從2010年11月5日的替代品每次通話之間爲05-11-2010。
在給定的系統,GetLocaleStr(GetThreadLocale,LOCALE_SSHORTDATE, 'M/d/YY')返回 「DD-MM-YYYY」(當前用戶的短日期格式)在WinXP
的問題發生SP3。 (雖然我們的應用程序沒有用於任何其他操作系統版本,但不能說它是否特定於該版本)。
我最初的想法是它可能與安全有關(用戶的安全性是不透氣的),但我還不能證明它。
我與ADO TParameter.Value(TADODataSet.Parameters.ParamByName()Value)具有完全相同的問題。如果你找到了解決方案,如果你能回答你自己的問題,我將不勝感激。 :) – 2012-10-09 22:38:15