Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2011-09-25 20:30:05 ЛС | профиль | цитата
1nd1g0, именно в том и дело, что массив может быть пустым. Я делаю map(Real -> String) на RealArray и StrList, и изначально у меня пустой массив. Вешать ещё одну проверку снаружи не хочется

За что такая дискриминация пустого массива - неизвестно. Предлагаю изменить код так:
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;

карма: 1

0