(工具:delphi2010,windows7 旗艦版,控制元件檔案是在網上下載的四個單元檔案:superdate.pas, superobject.pas,supertimezone.pas,
superxmlparser.pas)
我想安裝SuperObject這個類,但是在編譯單元檔案supertimezone.pas時報錯"[DCC Error] supertimezone.pas(95): E2003 Undeclared identifier: 'PDynamicTimeZoneInformation'"如下圖所示。請問各位指點一二?謝謝
uj5u.com熱心網友回復:
D2010可能版本有點低,WinApi.Windows單元沒有更新到win7 sdk的版本。uj5u.com熱心網友回復:
代碼中出現PDynamicTimeZoneInformation,不能識別。1、如果該類是自我宣告,該類需要參考另一個宣告的單元檔案。
2、如果它是Delphi內部宣告的類,需要更高版本的D,才能識別它。
uj5u.com熱心網友回復:
從字面上看,“太平洋時區資訊”,應該是作業系統的類。uj5u.com熱心網友回復:
或是“動態夏令時資訊”uj5u.com熱心網友回復:
能否發個適合delphi2010的SuperObject資源檔案給我!不勝感激!我的郵箱:[email protected]uj5u.com熱心網友回復:
找個支持D7的版本應該就能用uj5u.com熱心網友回復:
D2010是2009-08-15發布的,win7是2009-07-22發布的,D2010的windows單元沒來得及更新到win7 sdk的版本,你更新到XE或者把XE中的WinApi.Windows.pas復制到2010中應該可以用,如果堅持用2010,可以增加如下定義:PDynamicTimeZoneInformation = ^TDynamicTimeZoneInformation;
_TIME_DYNAMIC_ZONE_INFORMATION = record
Bias: Longint;
StandardName: array[0..31] of WCHAR;
StandardDate: TSystemTime;
StandardBias: Longint;
DaylightName: array[0..31] of WCHAR;
DaylightDate: TSystemTime;
DaylightBias: Longint;
TimeZoneKeyName: array[0..127] of WCHAR;
DynamicDaylightTimeDisabled: Boolean;
end;
uj5u.com熱心網友回復:
TDynamicTimeZoneInformation = _TIME_DYNAMIC_ZONE_INFORMATION;uj5u.com熱心網友回復:
樓上各位大神說得完全正確。版本太低,無法使用。如按7樓的方法添加代碼,可以解決”PDynamicTimeZoneInformation“不能識別的問題,但是又會有新的問題出現。
比如"[DCC Error] supertimezone.pas(153): E2003 Undeclared identifier: 'GetDynamicTimeZoneInformation";
綜上所述還是希望能得到適合于delphi2010的SuperObject資源檔案!不勝感激!我的郵箱:[email protected]。
uj5u.com熱心網友回復:
估計沒有適合于delphi2010的版本,其實你把Delphi XE的Windows.pas的相關部分拷貝/粘貼到你的程式,最多也就幾分鐘而已。uj5u.com熱心網友回復:
修改supertimezone.pas檔案增加如下代碼,重新編譯(* EXtended version - DST Aware *)
//新增開始
{$IF RTLVersion <= 21.00} // Delphi 2010 does not have these definitions.
type
PDynamicTimeZoneInformation = ^TDynamicTimeZoneInformation;
_TIME_DYNAMIC_ZONE_INFORMATION = record
Bias: Longint;
StandardName: array[0..31] of WCHAR;
StandardDate: TSystemTime;
StandardBias: Longint;
DaylightName: array[0..31] of WCHAR;
DaylightDate: TSystemTime;
DaylightBias: Longint;
TimeZoneKeyName: array[0..127] of WCHAR;
DynamicDaylightTimeDisabled: Boolean;
end;
{$EXTERNALSYM _TIME_DYNAMIC_ZONE_INFORMATION}
TDynamicTimeZoneInformation = _TIME_DYNAMIC_ZONE_INFORMATION;
TIME_DYNAMIC_ZONE_INFORMATION = _TIME_DYNAMIC_ZONE_INFORMATION;
{$EXTERNALSYM _TIME_DYNAMIC_ZONE_INFORMATION}
function GetDynamicTimeZoneInformation(var pTimeZoneInformation: TDynamicTimeZoneInformation): DWORD;
stdcall; external kernel32 name 'GetDynamicTimeZoneInformation' delayed;
{$IFEND}
//新增結束
{ Windows 7+ }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20837.html
標籤:VCL組件開發及應用
