Subject Re: [IBO] DML Caching
Author Geoff Worboys
> I may need some help on that because I haven't got
> into callstacks yet but here is a but more
> information that may point the way a bit.

When the exception appears in Delphi, simply display the CallStack
window and write out the top few lines.

If you rebuild with VCL debug libraries you will be able to get a
callstack that shows whether the actual exception is appearing in VCL
code (rather than IBO code). This can really help to discover exactly
what the problem is, for example; the last time I tracked down such a
problem I could see that the error occurred in a call to an MS DLL,
this meant that there was no "fix" possible and so a work around had
to be implemented.


> TVarData(Result).VType := VT_DECIMAL_X;
>
> where VT_DECIMAL_X is 14
>
> Does this help?

This is a fudge to try and force variants to support int64. The code
you see in IBO was a copy of what the VCL was doing in Delphi4/5. I
had hoped that by Delphi6 they may have implemented something less
clumsy.

If Delphi6 has a db.pas unit can you check the following function to
see if it looks the same as shown below (from Delphi5)...

function TLargeintField.GetAsVariant: Variant;
begin
if IsNull then
Result := Null else
begin
TVarData(Result).VType := VT_DECIMAL;
Decimal(Result).lo64 := GetAsLargeInt;
end;
end;



Geoff Worboys
Telesis Computing