On-line: Andrey, Dr. Oldwarez, гостей 0. Всего: 2 [подробнее..]
АвторСообщение





Пост 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() войти в какой-нибудь другой режим программы и потом выйти из программы, ошибки уже нет.

Спасибо: 0 
Профиль
Ответов - 5 [только новые]


постоянный участник




Пост N: 428
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.08 01:17. Заголовок: Берешь кусок програм..


Берешь кусок программы, кромсаешь его до минимума (т.е. чтоб можно было тестировать отдельно от системы), пробуешь с этим тестом работать ииии УДИВЛЯЕШЬСЯ он работает !!!
А потом лезешь в свою прогу и находишь отличия, исправляешь иии УРААААА тоже заработало
Это так пожалуй у многих бывает ......

Спасибо: 0 
Профиль





Пост N: 165
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 28.01.08 09:51. Заголовок: Re: Andrey


Andrey пишет:

 цитата:
А потом лезешь в свою прогу и находишь отличия, исправляешь


Так ведь это не новый "кусок программы" - Clipper'ная программа с этим текстом уже лет 10 беспроблемно работает на 5.01 и года четыре - на 5.2e...
Я говорю о том что именно в xHarbore что-то с SET RELATION неправильно сделано!
И в любом случае такого сочетания значений PROCNAME() не должно быть, "потому что этого не может быть никогда"!

Спасибо: 0 
Профиль
Администратор




Пост N: 731
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.01.08 10:42. Заголовок: Сделай dbClearRel() ..


Сделай dbClearRel() перед закрытием БД по своей РО
Возможно, в клиппере и харборе получаются разные номера РО, и они
закрываются в разном порядке
Т.е., в харборе сначала закрывается RASCH, а затем РО, у которой есть relation на RASCH


Спасибо: 0 
Профиль





Пост N: 168
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 28.01.08 16:15. Заголовок: Re: Pasha


Pasha, спасибо за совет, вроде помогло.
Но в принципе это неправильно: и SET RELATION у меня в программе далеко не один, и DBCLOSEALL() тоже не единственный... Перед всеми DBCLOSEALL() ставить dbClearRel() по всем областям? Попахивает идиотизмом... Почему Clipper думал об этом сам и не парил программера, как xHarbour?
И опять-таки, с провозглашённой совместимостью с Clipper'ом это немножко не вяжется!

Спасибо: 0 
Профиль
постоянный участник




Пост N: 431
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.08 23:41. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
И опять-таки, с провозглашённой совместимостью с Clipper'ом это немножко не вяжется!



Да не "дуй на воду", нормальная совместимость. Попробуй свою прогу совместить с Harbour'ом, я тогда посмотрю, как ты запоешь .....
А так методом проб и танцев все заработает.

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 119
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет