Автор | Сообщение |
|
| |
Пост N: 164
Зарегистрирован: 08.04.06
|
|
Отправлено: 28.01.08 00:23. Заголовок: Удивительная ошибка SET RELATION
Предыстория: FLISTRET() - обработчик TBROWSE'a одного из списков (баз) программы, MAIN() - основная функция. Выхожу из FLISTRET по ESC, выхожу из меню в MAIN'е тоже по ESC - для выхода собственно из программы - и получаю из ERRORSYS'а: Ошибка Base/1002 Алиас не существует: RASCH PROCNAME(2) = (b)FLISTRET(273) PROCNAME(3) = DBCLOSEALL(0) PROCNAME(4) = MAIN(1287) То есть полное ощущение того, что системная харборская функция DBCLOSEALL(), которая действительно запускается в 1287-й строке MAIN'а (при выходе из программы), зачем-то вызывает мою пользовательскую функцию FLISTRET()!!! На самом деле тут проблема скорее всего во вскользь упомянутой в какой-то теме многозадачности Харбора... В 273-й строке функция FLISTRET() находится SET RELATION TO RASCH->TO INTO CLIENT и кажись эта команда как раз и запускается в режиме многозадачности, но почему-то подвисает, если программа находится в режиме ожидания (например, на выборе пункта меню) - я подождал не выходя из меню минут 5 и точно так же получил эту ошибку при выходе. Однако, если после выхода из FLISTRET() войти в какой-нибудь другой режим программы и потом выйти из программы, ошибки уже нет.
|
|
|
Ответов - 5
[только новые]
|
|
|
| постоянный участник
|
Пост N: 428
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.01.08 01:17. Заголовок: Берешь кусок програм..
Берешь кусок программы, кромсаешь его до минимума (т.е. чтоб можно было тестировать отдельно от системы), пробуешь с этим тестом работать ииии УДИВЛЯЕШЬСЯ он работает !!! А потом лезешь в свою прогу и находишь отличия, исправляешь иии УРААААА тоже заработало Это так пожалуй у многих бывает ......
|
|
|
|
| |
Пост N: 165
Зарегистрирован: 08.04.06
|
|
Отправлено: 28.01.08 09:51. Заголовок: Re: Andrey
Andrey пишет: цитата: | А потом лезешь в свою прогу и находишь отличия, исправляешь |
| Так ведь это не новый "кусок программы" - Clipper'ная программа с этим текстом уже лет 10 беспроблемно работает на 5.01 и года четыре - на 5.2e... Я говорю о том что именно в xHarbore что-то с SET RELATION неправильно сделано! И в любом случае такого сочетания значений PROCNAME() не должно быть, "потому что этого не может быть никогда"!
|
|
|
|
| Администратор
|
Пост N: 731
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.01.08 10:42. Заголовок: Сделай dbClearRel() ..
Сделай dbClearRel() перед закрытием БД по своей РО Возможно, в клиппере и харборе получаются разные номера РО, и они закрываются в разном порядке Т.е., в харборе сначала закрывается RASCH, а затем РО, у которой есть relation на RASCH
|
|
|
|
| |
Пост N: 168
Зарегистрирован: 08.04.06
|
|
Отправлено: 28.01.08 16:15. Заголовок: Re: Pasha
Pasha, спасибо за совет, вроде помогло. Но в принципе это неправильно: и SET RELATION у меня в программе далеко не один, и DBCLOSEALL() тоже не единственный... Перед всеми DBCLOSEALL() ставить dbClearRel() по всем областям? Попахивает идиотизмом... Почему Clipper думал об этом сам и не парил программера, как xHarbour? И опять-таки, с провозглашённой совместимостью с Clipper'ом это немножко не вяжется!
|
|
|
|
| постоянный участник
|
Пост N: 431
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.01.08 23:41. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | И опять-таки, с провозглашённой совместимостью с Clipper'ом это немножко не вяжется! |
| Да не "дуй на воду", нормальная совместимость. Попробуй свою прогу совместить с Harbour'ом, я тогда посмотрю, как ты запоешь ..... А так методом проб и танцев все заработает.
|
|
|
|