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