WildSery wrote:
On Thu, 30 Nov 2006 20:24:24 +0300, Dmitri Kuzmenko <[EMAIL PROTECTED]> wrote:
я уж не помню, чье это, но вообще так нельзя. т.е.
за if (Test = nil) or (Test.dsc_address = nil)
я бы руки отрубал.
Почему нельзя-то?
В языках программирования оно вроде очень давно так, неполная проверка т.е.
Насколько я понемаю, то получается что проверяется ВСЕ условия, тоесть
неостанавливается если уже первое True, значит при втором уже
получаем AV если Test = nil ...
Я вот в Ibtypes.pas подправил ето:
Result := (@Param = nil) or (Param.Address = nil) or ((Param.Flags and
UDF_Flag_Null)<>0)
На:
Result := (@Param = nil);
If Result Then
Exit;
Result := (Param.Address = nil);
If Result Then
Exit;
Result := ((Param.Flags and UDF_Flag_Null)<>0);
Неутверждаю что самыи правильныи путь, но
паданье пропало ...
Кстати тамже есть функция UDF_GetString и если
в UDF попадает стринг с нулевои длинои тоесть '' , то тута тоже сервер
валится :(
Там я нелез править, а то несовсем рублю фишку там :)
Перед UDF_GetString шас делаю проверку на длину,
например If ATextValue.Length = 0 Then блаблабла;
Regards
Janex
P.S
В начале Ibtypes.pas видим:
Copyright (С) 1998-2000 RCAV
Автор: Олег Иванов