В debug-сборке своего проекта я включаю опции "Runtime errors" компилятора (Overflow checking, Range checking).
Если в TMSQuery используется простейший SELECT-запрос без параметров (например, "select * from sys.objects"), и включено свойство Options.DescribeParams, то в модуле OLEDBAccess, в методе TOLEDBCommand.GetParameterInfo происходит "классическое" переполнение в вычислении границы цикла при использовании беззнакового типа:
Код: Выделить всё
var
...
cParams: NativeUInt;
...
begin
...
// cParams = 0, и вычитать из беззнакового числа ничего нельзя.
for i := 0 to cParams - 1 do begin
...
end;