Форум » [x]Harbour » Перевожу Clipper на консольный Харбор » Ответить

Перевожу Clipper на консольный Харбор

MIKHAIL: Добрый день, уважаемое сообщество! Перехожу на Харбор, собрал программу, начинаю бороть ошибки несовместимости кода, по мере появления вопросов надеюсь на скорую помощь. Заранее всем участникам огромное спасибо!

Ответов - 245, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

Dima: MIKHAIL Проверил у себя , таки да , не создается лог в случае падения. PS Можно вот так xhb_errorsys() где то в самом начале проги.

MIKHAIL: Dima Так работает но имя лога не меняется.

Dima: MIKHAIL Пробуй XHB_ERRORLOG( [<cFileName>], [<lAppend>] ) -> { cOldName, lOldAppend }


petr707: Насколько помню, в hb_out.log пишутся только серьезные внутренние ошибки, которые нельзя перехватить в ERRSYS.PRG. Можно взять к себе текст ERRORSYS() из ..\src\rtl\errsys.prg и модицировать у себя выводом в нужный файл-лог Можно даже взять ERRORSYS из Clipper

MIKHAIL: Как можно сделать разбор XML файла? где можно список функций и описание почитать?

Dima: MIKHAIL Начни с http://clipper.borda.ru/?1-4-0-00000708-000-0-0-1328625125

AndreyZh: MIKHAIL пишет: Как можно сделать разбор XML файла? где можно список функций и описание почитать? Мои соболезования... Самому пришлось с 20.09.15 с нуля изучать данную "тему", в связи с появлением ЕГАИС в розничной торговле - в теории, на примитивных примерах всё кажется понятным, а в более сложных задачах 1. По документации есть классы TXML*, которые позволяют парсить и собирать хмл файлы, к данным классам приведено множество примеров использования переменных и методов - это наверное АЗБУКА. На "импортных" форумах в основном "разжовывают" примеры к этим классам 2. Реальность. Мной в процессе освоения данной темы создана и развивается программа. При изучении тщательно описывал в тексте программы нюансы и "засады" данных классов для xHarbour. Ее (программы) исходные текста, примеры разбираемых и порождаемых хмл файлов выложены для первого релиза на "странице" программы: http://olegon.ru/showthread.php?t=23079 - можете использовать для освоения... съэкономите кучу времени

MIKHAIL: Так и не смог понять откуда возникает ошибка Error ADSNTX/5068 Error 5068: There is no current record Она появляется только под Harbour +ADS (Local или Remote), при чем под Harbor+DBFNTX и Clipper+ADS все работает без проблемм... У кого есть какой то опыт на этот счет? Появляется в момент перемещения например dbseek() или dbgoto()... при чем не всегда... Может ADS + Harbour отслеживает выполнение set relations более строго чем для clipper ?

petr707: Похоже на поведение при индексе , который не соответствует таблице. Есть индексные выражения из связанных по relation областей ? Сделайте проверку индекса после свала.

MIKHAIL: petr707 пишет: Похоже на поведение при индексе , который не соответствует таблице. Сделайте проверку индекса после свала. Так дело в том что с одной базой работают приложение на Clipper и та же самая переведенная на Harbour. Так вот Clipper ведет себя нормально Причем тестил как на ADS7+Novell IPX так и на ADS10+Linux IP, везде одна борода... даже на LocalAds это происходит petr707 пишет: Есть индексные выражения из связанных по relation областей ? Да, есть, буду пробовать их отключать, но больно муторно выискивать где нужно будет править код....

petr707: .. работают приложение на Clipper и та же самая переведенная на Harbour.. Одновременно ? Лучше не делать. Переправу надо перейти.

MIKHAIL: petr707 пишет: Одновременно ? Лучше не делать. Так и отдельно, без Clipper приложений тот же косяк...

petr707: Старый способ - контрольная группа - хоть в биологии хоть в космонавтике 1) Сделать тестовую среду как копию (реплику) основной БД 2) Провести полную начальную индексацию 3) использовать только новый софт 4) повторять все проводки как в рабочей базе со старым софтом 5) после первого свала - всем стоп 6) ну и изучайте по всем срезам состояние этого контрольного примера

Pasha: Ads имеет два клиента: старый клипперовский 16-разрядный, и Ace. Они работают не одинаково. Проблема может быть именно в ace, даже не в харборе.

Dima: вообще у меня была связка Clipper+ADS и Harbour+ADS обе проги юзали одну и ту же базу. версии ADS (ACE и для Clipper) были 5.5 и работало нормально

MIKHAIL: Скорее всего моя догадка была правильной, клиент под Харбор проверяет соответствие выполнения set relation, если передвинуть в связаной таблице на другую запись, будет эта ошибка. Убрал все relations пока полет нормальный...

Dima: MIKHAIL Сделай тестовый не большой пример.

MIKHAIL: Dima пишет: Сделай тестовый не большой пример. USE TABLE1 INDEX TABLE1 USE TABLE2 SET RELATIONS TO KOD INTO TABLE1 DBGOTO(10) далее если делать перемещение по table1 из текущей активной области, где значение индексного выражения не равно значению TABLE2->KOD, будет ошибка ADS 5068 т.е. например table1->(dbgoto(n)) table1->(dbseek(n))

MIKHAIL: Как использовать функцию AdsIsConnectionAlive() ? ADSHANDLE:=AdsConnect(cPath) ? AdsIsConnectionAlive(ADSHANDLE) // .F. ADSHANDLE:=AdsConnection(cPath) ? AdsIsConnectionAlive(ADSHANDLE) // .F. ADSHANDLE:=AdsConnect60(cPath) ? AdsIsConnectionAlive(ADSHANDLE) // .F. Что не так?

Dima: MIKHAIL пишет: ADSHANDLE:=AdsConnect(cPath) Не верно ловишь хендл Лови его так ADSHANDLE:=AdsConnection() после AdsConnect(cPath) если он вернет TRUE



полная версия страницы