![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
UDF функция замены символов в строке для ІВ 5.5. [IB5.x]
Vn © (2004-11-23 15:46:00)Мастера не посоветуете нормальную UDF библиотеку, где бы была функция замены символов в строке. До сих пор пользовался rfunc.dll и FreeUDFLib.dll. Но в 1-й функция strreplace глючит, а во 2-й вообще не нашел. Спасибо.
Vn (2004-11-24 20:11:00) [1]Digitman © (24.11.04 18:59) [13]
Теперь понял.
SP/триггер я не стал создавать, а просто поганял чистый селект в борландовском SQL Explorer. Та же ошибка после выполнения запроса и попытке перейти на последнюю запись (т.е. FetchAll). Появляется в среднем каждый 2-3-й раз. Постараюсь порешать другими способами.
Всем спасибо.
Digitman (2004-11-24 18:59:00) [2]
> Vn (24.11.04 18:41) [12]
ты меня не понял ..
имелась ввиду конструкция в теле SP/триггера :
begin
..
when чего-то_там ..
..
end
Vn (2004-11-24 18:41:00) [3]Digitman © (24.11.04 16:59) [11]
У меня приблизительно так и есть.
Грубо:
Try
IBQuery1.sql.add('select UDFunction(nnnn) ...
IBQuery1.open;
while not IBQuery1.eof do begin
...
к.т1
...
...
к.тN
IBQuery1.next;
end;
except
on aa:exception do begin
ShowMessage(aa.Message+IBQuery1.Fields[1].asstring+ к.т...);
end;
end;
Исключение возникает всякий раз в разных контрольных точках и на разных записях НД.
Digitman (2004-11-24 16:59:00) [4]
> Vn (24.11.04 14:55) [10]
хорошо.
предположим, идея твоя имеет право на жищнь, но не изобразима здесь визуально и я ее не понял сразу ..
но что мешает вызов проблемной UDF заключить в блок контроля исключений ? с целью удостовериться в факте возбуждения искл-я именно в UDF?
Vn (2004-11-24 14:55:00) [5]Digitman © (24.11.04 14:38) [8]
Там меняется украинское І на англ., большое и маленькое
Vn (2004-11-24 14:50:00) [6]Johnmen © (24.11.04 13:39) [7]
Да именно так и работает. Через раз. И вываливается в разных местах во время прохода проги по набору данных. На разных записях. Не совсем понимаю что тут еще можно выкладывать. Код не менялся да и большой он, а все изменения были лишь в запросе, добавлением вышеуказанной функции. Так что получается не на что грешить окромя функции или кривых рук ))). Да и ексепшин дело рук сервера ІВ, а не програмы.
з.ы. если можешь посоветуй другую библиотеку для проверки
Digitman (2004-11-24 14:38:00) [7]
> в запрос внесено единственное изменение
странное, надо заметить, "изменение" : заменить все "I" на те же самые "I", а потом в результ.строке попытаться изменить "i" на те же самые "i" ...
смысл всего этого ? или решил просто поэкспериментировать ?
Johnmen (2004-11-24 13:39:00) [8]>Vn (24.11.04 13:11) [6]
Там смайлик в конце.
>програма начала вываливаться через раз - другой
Значит на раз - нормально, работает без ош., на два - ошибка ?
Приводи конкретный вызов ф-ии, когда ошибка, со значениями передаваемых параметров. Для начала.
PS
Если, например, я получаю AV in kernel32.dll, я не буду говорить, что ф-ии это длл глючат. Скорее я скажу, что глючат модули памяти...
Vn (2004-11-24 13:11:00) [9]Johnmen © (24.11.04 00:16) [5]
Ого как безапеляционно! Спорить не буду. Возможно у тебя есть какие то аргументы. Но если после 3-х лет безупречной работы в запрос внесено единственное изменение и програма начала вываливаться через раз - другой с ошибкой:A fatal exception occurred during the execution of a user defined function. Access violation. The code attempted to access a virtual address without privilege to do so, что можно подумать?
А изменение всего то вместо select u.Name... поставил select strreplace(strreplace(u.NAME,"І","I"),"і","i") Name,...
Johnmen (2004-11-24 00:16:00) [10]>rfunc.dll ... функция strreplace глючит
Позвольте уличить вас в наглой лжи...
(безотносительно версии сервера)
:)))
Sergey_Masloff (2004-11-23 21:55:00) [11]Sergey13 © (23.11.04 16:00) [3]
>Да говорят 5.5 одна из самых глючных у Борланда получилась.
Воистину так, они 5.6 всем сразу практически разослали...
>А УДФ - почему бы свою не написать?
И опять соглашусь. Времени 20 минут займет.
Sergey13 (2004-11-23 16:00:00) [12]Да говорят 5.5 одна из самых глючных у Борланда получилась. А УДФ - почему бы свою не написать?
Vn (2004-11-23 15:55:00) [13]А чем ІВ 5.5 плох? Да и задача не космические корабли запускать :)))
Sergey13 (2004-11-23 15:49:00) [14]А может тебе нормальный сервер поставить?