Ah, creo que encontré el problema, y de momento
parece que todo funciona ok.
Las declaraciones de algunos overrides de AnyDAC no eran correctas, por lo que se estaba llamando a las funciones base de TDataset (que no hacen nada). Estos son los cambios necesarios, en caso de que alguien se encuentre con este problema:
Código:
Source/uADCompDataSet.pas | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/Source/uADCompDataSet.pas b/Source/uADCompDataSet.pas
index b324bc9..af9cf96 100644
--- a/Source/uADCompDataSet.pas
+++ b/Source/uADCompDataSet.pas
@@ -758,8 +758,8 @@ type
procedure GetDetailLinkFields(AMasterFields, ADetailFields: TList); {$IFNDEF AnyDAC_FPC} override; {$ENDIF}
function GetColumnField(AColumn: TADDatSColumn): TField;
function GetFieldColumn(AField: TField): TADDatSColumn; overload;
- function GetFieldData(AFieldNo: Integer; ABuffer: Pointer): Boolean; overload; {$IFNDEF AnyDAC_FPC} override; {$ENDIF}
- function GetFieldData(AField: TField; ABuffer: Pointer): Boolean; overload; override;
+ function GetFieldData(AFieldNo: Integer; var ABuffer: TValueBuffer): Boolean; override;
+ function GetFieldData(AField: TField; var ABuffer: TValueBuffer): Boolean; override;
{$IFNDEF AnyDAC_FPC}
function GetStateFieldValue(AState: TDataSetState; AField: TField): Variant; override;
{$ENDIF}
@@ -3843,7 +3843,7 @@ begin
end;
{-------------------------------------------------------------------------------}
-function TADDataSet.GetFieldData(AFieldNo: Integer; ABuffer: Pointer): Boolean;
+function TADDataSet.GetFieldData(AFieldNo: Integer; var ABuffer: TValueBuffer): Boolean;
var
pRecBuf: PADBuffer;
oColumn: TADDatSColumn;
@@ -3983,7 +3983,7 @@ begin
end;
{-------------------------------------------------------------------------------}
-function TADDataSet.GetFieldData(AField: TField; ABuffer: Pointer): Boolean;
+function TADDataSet.GetFieldData(AField: TField; var ABuffer: TValueBuffer): Boolean;
var
pRecBuf: PADBuffer;
begin
@@ -4004,7 +4004,7 @@ begin
if AField.DataType = ftBCD then
CurrToBCD(PCurrency(pRecBuf + 1)^, PADBcd(ABuffer)^)
else
- ADMove(pRecBuf[1], ABuffer^, AField.DataSize);
+ ADMove(pRecBuf[1], PADBuffer(ABuffer)^, AField.DataSize);
end;
end;
end;