Browse Source

delphi XE7 compatibility fixes

Unknown 5 years ago
parent
commit
ffa2b9239b
3 changed files with 39 additions and 8 deletions
  1. 14 4
      Quick.HttpClient.pas
  2. 15 2
      Quick.Json.Serializer.pas
  3. 10 2
      Quick.Threads.pas

+ 14 - 4
Quick.HttpClient.pas

@@ -42,8 +42,11 @@ uses
   System.NetConsts,
   System.NetConsts,
   System.JSON;
   System.JSON;
   {$ELSE}
   {$ELSE}
-  IdHTTP,
-  IdException,
+    {$IFDEF DELPHIXE7_UP}
+    System.JSON,
+    {$ENDIF}
+    IdHTTP,
+    IdException,
     {$IFDEF FPC}
     {$IFDEF FPC}
     fpjson;
     fpjson;
     {$ELSE}
     {$ELSE}
@@ -150,7 +153,7 @@ begin
       {$IFDEF DELPHIXE8_UP}
       {$IFDEF DELPHIXE8_UP}
       resp := fHTTPClient.Get(aURL,responsecontent,nil);
       resp := fHTTPClient.Get(aURL,responsecontent,nil);
       {$ELSE}
       {$ELSE}
-        {$IFDEF FPC}
+        {$If Defined(FPC) OR Not Defined(DELPHIXE8_UP)}
         fHTTPClient.Get(aURL,responsecontent);
         fHTTPClient.Get(aURL,responsecontent);
         {$ELSE}
         {$ELSE}
         fHTTPClient.Get(aURL,responsecontent,nil);
         fHTTPClient.Get(aURL,responsecontent,nil);
@@ -369,17 +372,24 @@ constructor THttpRequestResponse.Create(aResponse : TIdHTTPResponse; const aCont
 begin
 begin
   fStatusCode := aResponse.ResponseCode;
   fStatusCode := aResponse.ResponseCode;
   fStatusText := aResponse.ResponseText;
   fStatusText := aResponse.ResponseText;
+  {$If Defined(FPC) OR Defined(DELPHIXE8_UP)}
   if (aContent.Contains('{')) and (aContent.Contains('}')) then fResponse := GetJSON(aContent) as TJsonObject;
   if (aContent.Contains('{')) and (aContent.Contains('}')) then fResponse := GetJSON(aContent) as TJsonObject;
+  {$ELSE}
+  if (aContent.Contains('{')) and (aContent.Contains('}')) then fResponse:= TJsonObject.ParseJSONValue(aContent) as TJsonObject;
+  {$ENDIF}
   //if response is not json, get as json result
   //if response is not json, get as json result
   if fResponse = nil then
   if fResponse = nil then
   begin
   begin
     fResponse := TJSONObject.Create;
     fResponse := TJSONObject.Create;
+    {$IFDEF DELPHIXE7_UP}
+    fResponse.AddPair('Result',aContent);
+    {$ELSE}
     fResponse.Add('Result',aContent);
     fResponse.Add('Result',aContent);
+    {$ENDIF}
   end;
   end;
 end;
 end;
 {$ENDIF}
 {$ENDIF}
 
 
-
 destructor THttpRequestResponse.Destroy;
 destructor THttpRequestResponse.Destroy;
 begin
 begin
   if Assigned(fResponse) then fResponse.Free;
   if Assigned(fResponse) then fResponse.Free;

+ 15 - 2
Quick.Json.Serializer.pas

@@ -1213,7 +1213,12 @@ begin
         begin
         begin
           if (aValue.TypeInfo = System.TypeInfo(Boolean)) then
           if (aValue.TypeInfo = System.TypeInfo(Boolean)) then
           begin
           begin
+            {$IFDEF DELPHIRX10_UP}
             Result.JsonValue := TJSONBool.Create(aValue.AsBoolean);
             Result.JsonValue := TJSONBool.Create(aValue.AsBoolean);
+            {$ELSE}
+            if aValue.AsBoolean then Result.JsonValue := TJsonTrue.Create
+              else Result.JsonValue := TJsonFalse.Create;
+            {$ENDIF}
           end
           end
           else
           else
           begin
           begin
@@ -1515,7 +1520,11 @@ function TJsonSerializer.JsonToObject(aType: TClass; const aJson: string): TObje
 var
 var
   json: TJSONObject;
   json: TJSONObject;
 begin
 begin
+  {$If Defined(FPC) OR Defined(DELPHIRX10_UP)}
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
+  {$ELSE}
+  json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+  {$ENDIF}
   try
   try
     Result := fRTTIJson.DeserializeClass(aType,json);
     Result := fRTTIJson.DeserializeClass(aType,json);
   finally
   finally
@@ -1532,8 +1541,12 @@ end;
 function TJsonSerializer.JsonToObject(aObject: TObject; const aJson: string): TObject;
 function TJsonSerializer.JsonToObject(aObject: TObject; const aJson: string): TObject;
 var
 var
   json: TJSONObject;
   json: TJSONObject;
-begin
-  json := TJsonObject(TJSONObject.ParseJSONValue(aJson,True));
+begin;
+  {$If Defined(FPC) OR Defined(DELPHIRX10_UP)}
+  json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
+  {$ELSE}
+  json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+  {$ENDIF}
   try
   try
     Result := fRTTIJson.DeserializeObject(aObject,json);
     Result := fRTTIJson.DeserializeObject(aObject,json);
   finally
   finally

+ 10 - 2
Quick.Threads.pas

@@ -1150,7 +1150,11 @@ begin
       begin
       begin
         fTaskStatus := TWorkTaskStatus.wtsException;
         fTaskStatus := TWorkTaskStatus.wtsException;
         {$IFNDEF FPC}
         {$IFNDEF FPC}
-        fFaultControl.FailedExecution(AcquireExceptionObject as Exception);
+          {$IF DELPHIRX10_UP}
+          fFaultControl.FailedExecution(AcquireExceptionObject as Exception);
+          {$ELSE}
+          fFaultControl.FailedExecution(Exception(AcquireExceptionObject));
+          {$ENDIF}
         {$ELSE}
         {$ELSE}
         fFaultControl.FailedExecution(Exception(AcquireExceptionObject));
         fFaultControl.FailedExecution(Exception(AcquireExceptionObject));
         {$ENDIF}
         {$ENDIF}
@@ -2167,7 +2171,11 @@ begin
     on E : Exception do
     on E : Exception do
     begin
     begin
       {$IFNDEF FPC}
       {$IFNDEF FPC}
-      if Assigned(fExceptionProc) then fExceptionProc(AcquireExceptionObject as Exception)
+        {$IF DELPHIRX10_UP}
+        if Assigned(fExceptionProc) then fExceptionProc(AcquireExceptionObject as Exception)
+        {$ELSE}
+        if Assigned(fExceptionProc) then fExceptionProc(Exception(AcquireExceptionObject))
+        {$ENDIF}
       {$ELSE}
       {$ELSE}
       if Assigned(fExceptionProc) then fExceptionProc(Exception(AcquireExceptionObject))
       if Assigned(fExceptionProc) then fExceptionProc(Exception(AcquireExceptionObject))
       {$ENDIF}
       {$ENDIF}