…bug detected inside of unit uDADataStreamerSupport.pas, public method Bin2_ReadVariantFromStream, see attached example.
Suggested hotfix:
// this is new method to read blob data from stream
function Bin2_ReadBlobFromStream(Stream: TStream): Variant;
var
p: pointer;
lSize: cardinal;
begin
lSize:= Bin2_ReadIntegerFromStream(Stream);
Result:= VarArrayCreate([0, lSize - 1], varByte);
p := VarArrayLock(Result);
try
Stream.ReadBuffer(p^, lSize);
finally
VarArrayUnlock(Result);
end;
end;
function Bin2_ReadVariantFromStream(Stream: TStream; DataType: TDADataType): Variant;
begin
case Datatype of
datFixedWideChar, datWideString,datWideMemo, datXml: Result := Bin2_ReadWidestringFromStream2(Stream);
datFixedChar, datString, datMemo{, DatBlob}: Result := Bin2_ReadAnsistringFromStream(Stream);
// read BLOB data using new dedicated method
datBlob: Result:= Bin2_ReadBlobFromStream(Stream);
..
else
Result := varNull;
end;
end;
Regards from Prague,
Jaroslav
daSample.zip (52.6 KB)