Fix #68830 detail

I’m interested to know the details of fix #68830 which is in the change logs for the Sep 2014 release of DA.

Is there any more detail on this item or anywhere I can review issue/bug numbers generally?

Thanks.

For newer bugs we report the status back in talk (if they were reported in talk in the first place).

This particular issue involved these changes:

diff --git a/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas b/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas
index 29ea7c7..4575eff 100644
--- a/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas    
+++ b/Data Abstract for Delphi/Source/Drivers/uDAFireDACDriver.pas    
@@ -435,13 +435,27 @@ end;
 procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection;
   AADParams: TFDParams; ASetType: Boolean);
 var
-  i: integer;
+  i,j: integer;
   oDAPar: TDAParam;
   oADPar: TFDParam;
 begin
   for i := 0 to AADParams.Count - 1 do begin
     oADPar := AADParams[i];
-    oDAPar := ADAParams.ParamByName(oADPar.Name);
+
+    if oADPar.ParamType = ptResult then begin
+      oDAPar := ADAParams.FindParam(oADPar.Name);
+      if oDAPar = nil then begin
+        for j := 0 to ADAParams.Count-1 do begin
+          if ADAParams[j].ParamType = daptResult then begin
+            oDAPar := ADAParams[j];
+            break;
+          end;
+        end;
+      end;
+      if oDAPar = nil then oDAPar := ADAParams.ParamByName(oADPar.Name);
+    end
+    else
+      oDAPar := ADAParams.ParamByName(oADPar.Name);
     if oDAPar.ParamType = daptUnknown then
       oADPar.ParamType := ptInput
     else
@@ -489,7 +503,7 @@ end;
 
 procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TFDParams);
 var
-  i: integer;
+  i,j: integer;
   oDAPar: TDAParam;
   oADPar: TFDParam;
 begin
@@ -497,7 +511,22 @@ begin
     Exit;
   for i := 0 to AADParams.Count - 1 do begin
     oADPar := AADParams[i];
-    oDAPar := Params.ParamByName(oADPar.Name);
+
+    if oADPar.ParamType = ptResult then begin
+      oDAPar := Params.FindParam(oADPar.Name);
+      if oDAPar = nil then begin
+        for j := 0 to Params.Count-1 do begin
+          if Params[j].ParamType = daptResult then begin
+            oDAPar := Params[j];
+            break;
+          end;
+        end;
+      end;
+      if oDAPar = nil then oDAPar := Params.ParamByName(oADPar.Name);
+    end
+    else
+      oDAPar := Params.ParamByName(oADPar.Name);
+
     if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then
       oDAPar.Value := oADPar.Value;
   end;

and:

diff --git a/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas b/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas
index 9b68de6..3984007 100644
--- a/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas    
+++ b/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas    
@@ -42,9 +42,11 @@ end;
 
 uses
   {$IFDEF DELPHIXE2UP}
+    {$IFDEF MSWINDOWS} Winapi.Windows,{$ENDIF}
     System.SysUtils, System.Classes, System.Variants,
     Data.DB,Data.FmtBCD,
   {$ELSE}
+    {$IFDEF MSWINDOWS} Windows,{$ENDIF}
     SysUtils, Classes, Variants, DB, FmtBCD,
   {$ENDIF}
   uADStanIntf, uADStanOption, uADDatSManager, uADPhysIntf, uADCompClient,
@@ -468,13 +470,27 @@ end;
 procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection;
   AADParams: TADParams; ASetType: Boolean);
 var
-  i: integer;
+  i,j: integer;
   oDAPar: TDAParam;
   oADPar: TADParam;
 begin
   for i := 0 to AADParams.Count - 1 do begin
     oADPar := AADParams[i];
-    oDAPar := ADAParams.ParamByName(oADPar.Name);
+
+    if oADPar.ParamType = ptResult then begin
+      oDAPar := ADAParams.FindParam(oADPar.Name);
+      if oDAPar = nil then begin
+        for j := 0 to ADAParams.Count-1 do begin
+          if ADAParams[j].ParamType = daptResult then begin
+            oDAPar := ADAParams[j];
+            break;
+          end;
+        end;
+      end;
+      if oDAPar = nil then oDAPar := ADAParams.ParamByName(oADPar.Name);
+    end
+    else
+      oDAPar := ADAParams.ParamByName(oADPar.Name);
     if oDAPar.ParamType = daptUnknown then
       oADPar.ParamType := ptInput
     else
@@ -522,7 +538,7 @@ end;
 
 procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TADParams);
 var
-  i: integer;
+  i,j: integer;
   oDAPar: TDAParam;
   oADPar: TADParam;
 begin
@@ -530,7 +546,22 @@ begin
     Exit;
   for i := 0 to AADParams.Count - 1 do begin
     oADPar := AADParams[i];
-    oDAPar := Params.ParamByName(oADPar.Name);
+
+    if oADPar.ParamType = ptResult then begin
+      oDAPar := Params.FindParam(oADPar.Name);
+      if oDAPar = nil then begin
+        for j := 0 to Params.Count-1 do begin
+          if Params[j].ParamType = daptResult then begin
+            oDAPar := Params[j];
+            break;
+          end;
+        end;
+      end;
+      if oDAPar = nil then oDAPar := Params.ParamByName(oADPar.Name);
+    end
+    else
+      oDAPar := Params.ParamByName(oADPar.Name);
+
     if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then
       oDAPar.Value := oADPar.Value;
   end;

I hope that answers your question.

Thanks for the info. I was actually wondering what the original issue was that this fix corrected so I could determine if it was something that might affect me.

see DA8 DARemoteCommand for details

Thank you :slight_smile: