Страница 1 из 1

непонятки с Trunc()

СообщениеДобавлено: 14.04.2017 20:23:01
serge#LVL
Здравствуйте!

Помогите разобраться с проблемой.
Есть часть кода, где вычисляется индекс динамического массива, а потом осуществляется его проверка. Если индекс больше или равен размерности массива, то ему присваивается последний индекс массива.

Код: Выделить всё
jt0:=trunc((latT[0,it]-lat[j,i])/dlat);
if jt0>=tny then
jt0:=tny-1;


Проблема в том, условие не выполняется при jt0=tny. Вследствие возникает Access Vialation при обращении к несуществующему индексу массива.
Не могу понять в чем причина. Применял приведение типов к jt0 и tny и к Trunc(); и условие записывал в виде if abs(jt0-tny)<=1e-5 then... не помогло

Re: непонятки с Trunc()

СообщениеДобавлено: 14.04.2017 21:24:41
vitaly_l
Посмотрите что именно у Вас получается в tny после jt0:=tny-1; и после trunk
при tny равному 0 Вы получаете индекс равный "-1" и т.д.

Re: непонятки с Trunc()

СообщениеДобавлено: 14.04.2017 22:26:01
serge#LVL
vitaly_l, спасибо!

Я разобрался. Проблема была совсем не в trunc. И условие работает нормально. Индекс массива увеличивался ниже этого кода, а я в процессе отладки это сразу не увидел :oops: . Прицепился к условию и не смог с мертвой точки сдвинуться.