За что такая дискриминация пустого массива - неизвестно. Предлагаю изменить код так:
procedure THIArrayFind._work_doFind2;
var
i, idx: integer;
r: real;
dt: TData;
begin
ArrIn := ReadArray(_data_Array);
- if (ArrIn = nil) or (ArrIn._Count = 0) then exit;
+ if (ArrIn = nil) then exit;
+ ItemIdx := -1;
+ if (ArrIn._Count <> 0) then
+ begin
idx := ReadInteger(_Data, _data_Index, _prop_Index);
dt := ReadData(_Data, _data_Value, @_prop_Value);
if idx < 0 then exit;
r := ToReal(dt);
- ItemIdx := -1;
for i := idx to ArrIn._Count - 1 do
if (r = ToReal(GetArrayVal(i))) then
begin
ItemIdx := i;
break;
end;
+ end;
_hi_CreateEvent(_Data, @_event_onFind, ItemIdx);
end;