diff --git a/Packages/DXE2/X2Utils.dpk b/Packages/DXE2/X2Utils.dpk index 59cde7b..a9731ab 100644 --- a/Packages/DXE2/X2Utils.dpk +++ b/Packages/DXE2/X2Utils.dpk @@ -58,6 +58,7 @@ contains X2UtElevation in '..\..\X2UtElevation.pas', X2UtPersistXML in '..\..\X2UtPersistXML.pas', X2UtPersistXMLBinding in '..\..\X2UtPersistXMLBinding.pas', - XMLDataBindingUtils in '..\..\XMLDataBindingUtils.pas'; + XMLDataBindingUtils in '..\..\XMLDataBindingUtils.pas', + X2UtDelphiCompatibility in '..\..\X2UtDelphiCompatibility.pas'; end. diff --git a/Packages/DXE2/X2Utils.dproj b/Packages/DXE2/X2Utils.dproj index cb2d0f5..7abff9a 100644 --- a/Packages/DXE2/X2Utils.dproj +++ b/Packages/DXE2/X2Utils.dproj @@ -173,6 +173,7 @@ + Cfg_2 Base diff --git a/X2UtCompilerVersion.inc b/X2UtCompilerVersion.inc index 68bbac4..6077f3d 100644 --- a/X2UtCompilerVersion.inc +++ b/X2UtCompilerVersion.inc @@ -1,6 +1,11 @@ // This makes it easier to check which compiler version is // being used... {$DEFINE DUNKNOWN} +{$UNDEF DXE2} +{$UNDEF DXE} +{$UNDEF D2010} +{$UNDEF D2009} +{$UNDEF D2007} {$UNDEF D2006} {$UNDEF D2005} {$UNDEF D8} @@ -12,7 +17,83 @@ {$UNDEF D2} {$UNDEF D1} +{$IFDEF VER230} + {$DEFINE DXE2} + {$DEFINE DXE2PLUS} + {$DEFINE DXEPLUS} + {$DEFINE D2010PLUS} + {$DEFINE D2009PLUS} + {$DEFINE D2007PLUS} + {$DEFINE D2006PLUS} + {$DEFINE D2005PLUS} + {$DEFINE D8PLUS} + {$DEFINE D7PLUS} + {$DEFINE D6PLUS} + {$DEFINE D5PLUS} + {$DEFINE D4PLUS} + {$DEFINE D3PLUS} + {$DEFINE D2PLUS} + {$DEFINE D1PLUS} + {$UNDEF DUNKNOWN} +{$ENDIF} + +{$IFDEF VER220} + {$DEFINE DXE} + {$DEFINE DXEPLUS} + {$DEFINE D2010PLUS} + {$DEFINE D2009PLUS} + {$DEFINE D2007PLUS} + {$DEFINE D2006PLUS} + {$DEFINE D2005PLUS} + {$DEFINE D8PLUS} + {$DEFINE D7PLUS} + {$DEFINE D6PLUS} + {$DEFINE D5PLUS} + {$DEFINE D4PLUS} + {$DEFINE D3PLUS} + {$DEFINE D2PLUS} + {$DEFINE D1PLUS} + {$UNDEF DUNKNOWN} +{$ENDIF} + +{$IFDEF VER210} + {$DEFINE D2010} + {$DEFINE D2010PLUS} + {$DEFINE D2009PLUS} + {$DEFINE D2007PLUS} + {$DEFINE D2006PLUS} + {$DEFINE D2005PLUS} + {$DEFINE D8PLUS} + {$DEFINE D7PLUS} + {$DEFINE D6PLUS} + {$DEFINE D5PLUS} + {$DEFINE D4PLUS} + {$DEFINE D3PLUS} + {$DEFINE D2PLUS} + {$DEFINE D1PLUS} + {$UNDEF DUNKNOWN} +{$ENDIF} + +{$IFDEF VER200} + {$DEFINE D2009} + {$DEFINE D2009PLUS} + {$DEFINE D2007PLUS} + {$DEFINE D2006PLUS} + {$DEFINE D2005PLUS} + {$DEFINE D8PLUS} + {$DEFINE D7PLUS} + {$DEFINE D6PLUS} + {$DEFINE D5PLUS} + {$DEFINE D4PLUS} + {$DEFINE D3PLUS} + {$DEFINE D2PLUS} + {$DEFINE D1PLUS} + {$UNDEF DUNKNOWN} +{$ENDIF} + {$IFDEF VER180} + {$DEFINE D2007} + {$DEFINE D2007PLUS} {$DEFINE D2006} {$DEFINE D2006PLUS} {$DEFINE D2005PLUS} diff --git a/X2UtDelphiCompatibility.pas b/X2UtDelphiCompatibility.pas new file mode 100644 index 0000000..ace2d02 --- /dev/null +++ b/X2UtDelphiCompatibility.pas @@ -0,0 +1,34 @@ +unit X2UtDelphiCompatibility; + +interface +uses + SysUtils; + + + function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; + function GetDefaultFormatSettings: TFormatSettings; + + +implementation + + +function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; +begin + {$IF CompilerVersion < 20} + Result := C in CharSet; + {$ELSE} + Result := SysUtils.CharInSet(C, CharSet); + {$IFEND} +end; + + +function GetDefaultFormatSettings: TFormatSettings; +begin + {$IF CompilerVersion < 20} + GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, Result); + {$ELSE} + Result := TFormatSettings.Create; + {$IFEND} +end; + +end. diff --git a/X2UtNamedFormat.pas b/X2UtNamedFormat.pas index 13e4ef2..a04d12e 100644 --- a/X2UtNamedFormat.pas +++ b/X2UtNamedFormat.pas @@ -89,7 +89,7 @@ begin break; end; - if not (position^ in ValidNameChars) then + if not CharInSet(position^, ValidNameChars) then break; Inc(position); diff --git a/X2UtSingleInstance.pas b/X2UtSingleInstance.pas index c41ee7c..3be43b8 100644 --- a/X2UtSingleInstance.pas +++ b/X2UtSingleInstance.pas @@ -198,7 +198,9 @@ type implementation uses - Windows; + Windows, + + X2UtDelphiCompatibility; const @@ -628,7 +630,7 @@ begin for iParam := 1 to ParamCountEx(ACmdLine) do begin sParam := ParamStrEx(ACmdLine, iParam); - if (AChars = []) or (sParam[1] in AChars) then + if (AChars = []) or CharInSet(sParam[1], AChars) then if AIgnoreCase then begin if (AnsiCompareText(Copy(sParam, 2, Maxint), ASwitch) = 0) then begin Result := True; diff --git a/XMLDataBindingUtils.pas b/XMLDataBindingUtils.pas index bf1cda4..567384d 100644 --- a/XMLDataBindingUtils.pas +++ b/XMLDataBindingUtils.pas @@ -91,7 +91,9 @@ uses DateUtils, Math, Types, - Windows; + Windows, + + X2UtDelphiCompatibility; type @@ -110,7 +112,7 @@ var timeOffset: Integer; begin - GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatSettings); + formatSettings := GetDefaultFormatSettings; Result := FormatDateTime(XMLDateTimeFormats[AFormat], ADate, formatSettings); if AFormat in [xdtDateTime, xdtTime] then @@ -237,7 +239,7 @@ begin begin { Zulu time } hasTimezone := True; - end else if time[1] in [XMLTimezoneSigns[False], XMLTimezoneSigns[True]] then + end else if CharInSet(time[1], [XMLTimezoneSigns[False], XMLTimezoneSigns[True]]) then begin { Parse timezone ([+|-]xx:xx) } if TryStrToInt(Copy(time, 2, 2), hour) and