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





Пост N: 86
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"


Добрый день, уважаемые коллеги.

Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении.

Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!"
Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило.
Возникли ошибки на этапе линковки:

Скрытый текст

Help, please - что делать и куды бечь ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


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


Пост N: 388
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 27.08.13 12:49. Заголовок: От DBFNTX отказался..


От DBFNTX отказался, сразу переделывал под cdx

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3476
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.08.13 16:57. Заголовок: Sergy я что то проп..


Sergy
я что то пропустил а антивирус стоит ? в исключениях числятся у него папки с базами и прогой ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 243
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 27.08.13 16:59. Заголовок: Нашел в коде еще нес..


Нашел в коде еще несколько прямых вызовов DBUSEAREA() и DBSETNDEX() - заменил их на свои NetUse() и NetSetIndex().

Пока конечно рано говорить, но ситуация по ходу стабилизировалась - нет непонятных сообщений о неоткрытых областях, отсутствии индексации и тп...
Одна машина пока прислала несколько отчетов о том, что с первого раза не удалось открыть таблицу.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 244
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 27.08.13 17:01. Заголовок: Dima пишет: я что т..


Dima пишет:

 цитата:
я что то пропустил а антивирус стоит ? в исключениях числятся у него папки с базами и прогой ?


Стоит официальный лицензионный NOD32 - на сервере серверная версия, у клиентов - клиентские. Разумеется на сервере *.dbf и *.ntx стоят в исключениях.
Программу в исключения не ставил никогда - проблем особых не было. Ну проверит один раз при запуске - делов-то... Все-таки EXE - он может быть заражен при определенном стечении обстоятельств...
На рабочих машинах - 100% гарантии нет, но админ сети вроде в курсе. Кстати будет повод проверить...

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




Пост N: 242
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.13 17:29. Заголовок: Sergy пишет:res:=DBS..


Sergy пишет:
 цитата:
res:=DBSETINDEX(cName)
IF res; EXIT; ENDIF


Clipper ng говорит dbSetIndex() return NIL, в hb dbSetIndex() это вызов hb_func( ORDLISTADD ) и там возвраты разные и написано:
/* Clipper clears NETERR flag when index is open */
hb_rddSetNetErr( HB_FALSE );
может лучше из SET INDEX ... функции в команде использовать, ? OrdCount() даст кол-во подключенных index\tag


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




Пост N: 2962
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.08.13 17:37. Заголовок: Sergy пишет: Получи..


Sergy пишет:

 цитата:
Получил одно вот такое сообщение:
27.08.2013 09:45:46 NetUse(caroute) tried to open 1 times and OK



Это говорит о том, что менее чем на секунду файл все-таки был открыт каким-то процессом. А вот каким - в этом мы вряд ли поможем. Возможные предположения уже высказаны.
Хорошо бы еще в лог писать режим открытия - lShared


 цитата:
и несколько вот таких:

Ошибка DBFNTX/1201 Файл не индексирован

В NetSetIndex() поставил проверку успешности открытия индекса ( res:=DBSETINDEX() ), но почему-то она не сработала ?




Если dbSetIndex вернул .t. - значит, индекс был открыт успешно, и никак не иначе. А причина ошибки 1201 может быть другой: индекс был закрыт, был
вызов set order to 0, или set order на несуществующий индекс, или где-то ошибка в имени индекса, в результате чего текущий индекс оказался не установлен.
Сергей, только не говорите, что такого не может быть, иначе мы ничем не сможем помочь. Пересмотрите еще раз свой код, вставьте дополнительные логи в конце концов.

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




Пост N: 2963
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.08.13 17:47. Заголовок: SergKis пишет: Clip..


SergKis пишет:

 цитата:
Clipper ng говорит dbSetIndex() return NIL, в hb dbSetIndex() это вызов hb_func( ORDLISTADD ) и там возвраты разные и написано:
/* Clipper clears NETERR flag when index is open */
hb_rddSetNetErr( HB_FALSE );
может лучше из SET INDEX ... функции в команде использовать, ? OrdCount() даст кол-во подключенных index\tag



Да, правильно, успешность открытия индекса лучше проверять чем нибудь вроде:
IndexOrd() # 0
! Empty(IndexKey())
! Empty(ordName())

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3477
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.08.13 17:52. Заголовок: Sergy Где то есть а..


Sergy
Где то есть аналогичная тема от AndreyZh тоже переходил человек с Clipper и тоже были не увязки и споры.
Сегодня у него кажется все нормально так что даже редко тут появляется ;)

PS
А лагов в сети нет ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 245
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 27.08.13 18:11. Заголовок: Pasha пишет: Сергей..


Pasha пишет:

 цитата:
Сергей, только не говорите, что такого не может быть


Хорошо, не буду.

Dima пишет:

 цитата:
А лагов в сети нет ?


Что имеется в виду и как это выяснить ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3478
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.08.13 19:48. Заголовок: Sergy На "пробл..


Sergy
На "проблемных" станциях как вариант дай команду
ping ipсервера -n 100 -l 1400
и посмотри результат

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 915
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 27.08.13 19:50. Заголовок: Сеть лучше утилитой ..


Сеть лучше утилитой iperf проверить в режиме трансляции udp-пакетов.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 246
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 27.08.13 21:53. Заголовок: SergKis пишет: Clip..


SergKis пишет:

 цитата:
Clipper ng говорит dbSetIndex() return NIL, в hb dbSetIndex() это вызов hb_func( ORDLISTADD ) и там возвраты разные и написано:
/* Clipper clears NETERR flag when index is open */
hb_rddSetNetErr( HB_FALSE );
может лучше из SET INDEX ... функции в команде использовать, ? OrdCount() даст кол-во подключенных index\tag



Почитал Changelog.txt:


 цитата:
* changed ordListAdd()/dbSetIndex() - now they return logical value with information about success



Пока остановился на этом варианте.
Несколько предыдущих ошибок "Файл не индексирован" выскочили из-за того, что в паре-тройке мест остались прямые вызовы DBUSEAREA/DBSETINDEX вместо замененных мною USE ... INDEX ...

upd: Поймал наконец-то и такие ошибки:

27.08.2013 14:37:33 NetSetIndex(system) tried to open 1 times and OK
27.08.2013 14:47:22 NetSetIndex(F:\WORK\DATA\carjob2.ntx) tried to open 1 times and OK

Что самое странное - программа запускается на сервере и управляется через RDP - т.е. диск с базой у нее вообще локальный, а не по сети.

И проверил, что Харборовский DBSETINDEX() возвращает корректный результат для обработки в NetSetIndex()
... продолжаю наблюдения.

Спасибо коллективному разуму.

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




Пост N: 243
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.08.13 10:50. Заголовок: Sergy пишет:Почитал ..


Sergy пишет:
 цитата:
Почитал Changelog.txt


первоисточник SRC hb 3.2
 
HB_FUNC( ORDLISTADD )
{
...
if( ! HB_ISNIL( 1 ) )
hb_errRT_DBCMD( EG_ARG, EDBCMD_ORDLSTADD_BADPARAMETER, NULL, HB_ERR_FUNCNAME );
return; !!!!!!!!!!
}
...
if( ! pOrderInfo.itmResult || HB_IS_NIL( pOrderInfo.itmResult ) )
hb_retl( errCode == HB_SUCCESS ); !!!!
...

FUNCTION dbSetIndex( cIndexName )
RETURN ordListAdd( cIndexName )


Sergy пишет:
 цитата:
Что самое странное - программа запускается на сервере и управляется через RDP - т.е. диск с базой у нее вообще локальный, а не по сети


SergKis пишет:
 цитата:
использования clipper, hb показала, даже на локальной базе ...


причем полгода может работать, а потом кердык - начнет елозить. Разбор полетов покажет как правило анти\вирус обновили, заменили ...

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 247
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 29.08.13 23:44. Заголовок: Мужчины, огромная Ва..


Мужчины, огромная вам всем благодарность за помощь и поддержку!

Третий день программа работает практически как часы на ежедневной нагрузке. И как работает - летает, как ласточка, все юзеры довольны. Ничего того, что-бы меня удивило в ее поведении - нет. А ведь неделей раньше рвал волосы во всех местах и уже подумывал - бросить все нак*й и вернуться на Clipper.

Кое-где выплывают косяки моего программирования, которых не замечал наш старый добрый 5.2e. Потихоньку накапливаются сообщения о том, что таблица/индекс не открылись с первого раза. Пытаюсь понять логику - информации мало, но похоже, что они возникают на "сверхбыстрых" машинах на локальных ресурсах. Например, "разгруженном" от юзеров терминальном сервере (рано утром или поздно вечером).

Благодаря Вашим наработкам в этой ветке, научил программу "пипикать" wave-файлами из ресурсов, блокировать крестик, менять заголовок Windows-окошка. Так классно!

Спасибо еще раз!
На этом не прощаюсь - искренне надеюсь, еще будут интересные вопросы и обсуждения.


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




Пост N: 2969
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.08.13 16:26. Заголовок: Запускаю свою харбор..


Запускаю свою харбор-программу, которая открывает файлы через dbfcdx - shared. Запускаю dosbox, а в нем - программу, которая открывает dbf-файл монопольно (свой старый dbview под ms dos). Файл не должен открываться, но он открывается.
Если попытаться открыть этот файл монопольно win32-программой, то попытка будет неуспешной, как и должно быть. Выходит, что открытие файлов под ntvdm/dosbox происходит не по правилам.
Вот поэтому старая клиппер-программа и всегда открывала файлы, которые не должна была открывать, в отличие от харбор-программы, которая ведет себя, как ей и положено.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3494
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.08.13 16:55. Заголовок: Pasha пишет: Запуск..


Pasha пишет:

 цитата:
Запускаю свою харбор-программу, которая открывает файлы через dbfcdx - shared. Запускаю dosbox, а в нем - программу, которая открывает dbf-файл монопольно (свой старый dbview под ms dos). Файл не должен открываться, но он открывается.


Попробовал повторить (без DOSBOX разумеется). Файл не открылся.

Первой запустил Harbour прогу
 
proc main
use test shared new
browse()
return


Вторая на Clipper
 
use test exclusive new
browse() // бровса я не увидел и прога сразу завершила свою работу


ЗЫ
неисповедимы пути господни NTVDM


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 266
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 06.09.13 21:41. Заголовок: Возникло подозрение,..


Возникло подозрение, что сохранение длинной CHAR переменной в поле таблицы "портит" символы "нижней" части ASCII с кодом, меньшим CHR(32).

Чтобы проверить это, хочу попробовать USE (cTable) CODEPAGE (...)

Подскажите плиз, какую страницу нужно указать, чтобы полностью отказаться от перекодировки ?
Нужен какой-нить "NULL" или "WESTERN EUROPE".
Какие они вообще бывают, кроме "RU866" и "RU1251" - попробую методом перебора...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 119
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 07.09.13 10:07. Заголовок: HB_FUNC_EXTERN( HB_C..


HB_FUNC_EXTERN( HB_CODEPAGE_BG866 );
HB_FUNC_EXTERN( HB_CODEPAGE_BGISO );
HB_FUNC_EXTERN( HB_CODEPAGE_BGMIK );
HB_FUNC_EXTERN( HB_CODEPAGE_BGWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_CS852 );
HB_FUNC_EXTERN( HB_CODEPAGE_CS852C );
HB_FUNC_EXTERN( HB_CODEPAGE_CSISO );
HB_FUNC_EXTERN( HB_CODEPAGE_CSKAMC );
HB_FUNC_EXTERN( HB_CODEPAGE_CSWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_DE850 );
HB_FUNC_EXTERN( HB_CODEPAGE_DE850M );
HB_FUNC_EXTERN( HB_CODEPAGE_DEISO );
HB_FUNC_EXTERN( HB_CODEPAGE_DEWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_DK865 );
HB_FUNC_EXTERN( HB_CODEPAGE_EL437 );
HB_FUNC_EXTERN( HB_CODEPAGE_EL737 );
HB_FUNC_EXTERN( HB_CODEPAGE_ELISO );
HB_FUNC_EXTERN( HB_CODEPAGE_ELWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_EN );
HB_FUNC_EXTERN( HB_CODEPAGE_ES850 );
HB_FUNC_EXTERN( HB_CODEPAGE_ES850C );
HB_FUNC_EXTERN( HB_CODEPAGE_ES850M );
HB_FUNC_EXTERN( HB_CODEPAGE_ESISO );
HB_FUNC_EXTERN( HB_CODEPAGE_ESMWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_ESWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_FI850 );
HB_FUNC_EXTERN( HB_CODEPAGE_FR850 );
HB_FUNC_EXTERN( HB_CODEPAGE_FR850M );
HB_FUNC_EXTERN( HB_CODEPAGE_FRISO );
HB_FUNC_EXTERN( HB_CODEPAGE_FRWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_HR646 );
HB_FUNC_EXTERN( HB_CODEPAGE_HR852 );
HB_FUNC_EXTERN( HB_CODEPAGE_HRISO );
HB_FUNC_EXTERN( HB_CODEPAGE_HRWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_HU852 );
HB_FUNC_EXTERN( HB_CODEPAGE_HU852C );
HB_FUNC_EXTERN( HB_CODEPAGE_HUISO );
HB_FUNC_EXTERN( HB_CODEPAGE_HUWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_IS850 );
HB_FUNC_EXTERN( HB_CODEPAGE_IS861 );
HB_FUNC_EXTERN( HB_CODEPAGE_IT437 );
HB_FUNC_EXTERN( HB_CODEPAGE_IT850 );
HB_FUNC_EXTERN( HB_CODEPAGE_IT850M );
HB_FUNC_EXTERN( HB_CODEPAGE_ITISB );
HB_FUNC_EXTERN( HB_CODEPAGE_ITISO );
HB_FUNC_EXTERN( HB_CODEPAGE_ITWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_LT775 );
HB_FUNC_EXTERN( HB_CODEPAGE_LTWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_NL850 );
HB_FUNC_EXTERN( HB_CODEPAGE_NL850M );
HB_FUNC_EXTERN( HB_CODEPAGE_NO865 );
HB_FUNC_EXTERN( HB_CODEPAGE_PL852 );
HB_FUNC_EXTERN( HB_CODEPAGE_PLISO );
HB_FUNC_EXTERN( HB_CODEPAGE_PLMAZ );
HB_FUNC_EXTERN( HB_CODEPAGE_PLWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_PT850 );
HB_FUNC_EXTERN( HB_CODEPAGE_PT860 );
HB_FUNC_EXTERN( HB_CODEPAGE_PTISO );
HB_FUNC_EXTERN( HB_CODEPAGE_RO852 );
HB_FUNC_EXTERN( HB_CODEPAGE_ROISO );
HB_FUNC_EXTERN( HB_CODEPAGE_ROWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_RU1251 );
HB_FUNC_EXTERN( HB_CODEPAGE_RU866 );
HB_FUNC_EXTERN( HB_CODEPAGE_RUISO );
HB_FUNC_EXTERN( HB_CODEPAGE_RUKOI8 );
HB_FUNC_EXTERN( HB_CODEPAGE_SK852 );
HB_FUNC_EXTERN( HB_CODEPAGE_SK852C );
HB_FUNC_EXTERN( HB_CODEPAGE_SKISO );
HB_FUNC_EXTERN( HB_CODEPAGE_SKKAMC );
HB_FUNC_EXTERN( HB_CODEPAGE_SKWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_SL646 );
HB_FUNC_EXTERN( HB_CODEPAGE_SL852 );
HB_FUNC_EXTERN( HB_CODEPAGE_SLISO );
HB_FUNC_EXTERN( HB_CODEPAGE_SLWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_SR646 );
HB_FUNC_EXTERN( HB_CODEPAGE_SR646C );
HB_FUNC_EXTERN( HB_CODEPAGE_SRWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_SV437C );
HB_FUNC_EXTERN( HB_CODEPAGE_SV850 );
HB_FUNC_EXTERN( HB_CODEPAGE_SV850M );
HB_FUNC_EXTERN( HB_CODEPAGE_SVISO );
HB_FUNC_EXTERN( HB_CODEPAGE_SVWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_TR857 );
HB_FUNC_EXTERN( HB_CODEPAGE_TRISO );
HB_FUNC_EXTERN( HB_CODEPAGE_TRWIN );
HB_FUNC_EXTERN( HB_CODEPAGE_UA1125 );
HB_FUNC_EXTERN( HB_CODEPAGE_UA1251 );
HB_FUNC_EXTERN( HB_CODEPAGE_UA866 );
HB_FUNC_EXTERN( HB_CODEPAGE_UAKOI8 );


Спасибо: 1 
ПрофильЦитата Ответить
Администратор




Пост N: 2974
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.09.13 22:08. Заголовок: Sergy пишет: Подска..


Sergy пишет:

 цитата:
Подскажите плиз, какую страницу нужно указать, чтобы полностью отказаться от перекодировки ?



Перекодировка не выполняется, если кодовая страница программы совпадает с кодовой страницей, указанной в команде use. Если в use не указана codepage, то она будет такой же, что в hb_cdpSelect, и перекодировки также не будет.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 267
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 08.09.13 22:11. Заголовок: Pasha пишет: Переко..


Pasha пишет:

 цитата:
Перекодировка не выполняется, если кодовая страница программы совпадает с кодовой страницей, указанной в команде use. Если в use не указана codepage, то она будет такой же, что в hb_cdpSelect, и перекодировки также не будет.


А может быть какая-нибудь петрушка с SAVESCREEN / RESTSCREEN ?

В одном месте программы, среди кучи однотипных вызовов: сохранение экрана - диалог - восстановление наблюдаю такой глюк: символы CHR(16) заменяются на "?" и соотв. выводятся назад уже не в виде треугольников, а в виде знаков вопроса.

Сначала думал на запись в файл (экраны складываются локально, чтобы не тратить память Clipper). Поигрался с CODEPAGE, потом переделал на сохранение в memvar-переменных - тоже самое.

Косяк совершенно незначительный, но бесит... Не люблю я эту неопределенность...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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