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

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

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

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

Dima: alexmar пишет: Оказывается нужно было при вызове DbCreateIndex указывать в явном виде имя индексного файла и расширение. Шаманство какое то Придется так же при открытии индексов к базам , расширение указывать явно.

Andrey: alexmar пишет: 2 По какому типу индекса (NTX, IDX, CDX) бОльшая совместимость между Clipper 5.2e и Harbour? Я работал раньше с CDX-драйвером. Работало нормально тогда. Но это давно было и использовал хХарбор терминалку. хХарборовская терминалка до сих пор отлично пашет даже на слабых компах.

nick_mi: У нас работают задачи как CLIPPER так и HARBOUR одновременно с одними и теми же базами. Переиндексацию часто делают в DBU проблем не замечалось. Индексы NTX. Harbour 3.2.0dev (r1601261444) Clipper 5.3


alexmar: Апну свой вопрос. alexmar пишет: 3 Вопрос по поводу 866 страницы в исходниках. В программе все отображается нормально, а вот кирилические символы в исходниках под дебагером - кракозябры. Есть ли какое-то решение вопроса? Pasha пишет: 3. Дебаггер - это такое же выполнение харбор-кода, как и основной программы. Дебаггер узнает о cp866 только после отработки hb_CdpSelect Возможно, еще надо выдать команду: hb_SetTermCP( "RU866" ) К сожалению, не помогло. Исходный текст в 866 кодировке в окне дебагера выглядит так: #IfDef HB REQUEST HB_CODEPAGE_RU866 REQUEST HB_LANG_RU866 hb_cdpSelect( "RU866" ) HB_LANGSELECT("RU866") hb_SetTermCP( "RU866" ) #EndIf cName := P_DEFVAL(cName,'"‡ à ¡®â- ï ¯« â "') Что можно еще сделать? Приложение консольное. Переводить исходники в Win кодировку пока не хочется

nick_mi: Возможно, в самом дебагере не предусмотрен русский язык и надо его пересобрать .

nick_mi: Был неправ. Обычный терминальный дебагер начал корректно отображать кириллицу после HB_CDPSELECT ('RU866')

MIKHAIL: nick_mi пишет: Обычный терминальный дебагер начал корректно отображать кириллицу после HB_CDPSELECT ('RU866') А где взять и как подключить дебагер ?

nick_mi: Параметр -b в вашем.hbp файле для сборки программы

MIKHAIL: nick_mi пишет: Параметр -b в вашем.hbp файле для сборки программы не требует библиотек и вызывается стандартно AltD ?

alexmar: nick_mi пишет: Возможно, в самом дебагере не предусмотрен русский язык и надо его пересобрать . Скорее всего так и есть nick_mi пишет: Был неправ. Обычный терминальный дебагер начал корректно отображать кириллицу после HB_CDPSELECT ('RU866') Наверно вы пользуете стандартный дебагер, а у меня дебагер от alkresin и вызов HB_CDPSELECT ('RU866') не помогает

alexmar: Где-то натыкался в форуме, а сейчас не могу найти... Как запретить DBUseArea при открытии dbf одновременно открывать одноименный индексный файл

Dima: SET AUTOPEN OFF

alexmar: спасибо

nick_mi: alexmar пишет: а у меня дебагер от alkresin и вызов HB_CDPSELECT ('RU866') не помогает Да, дебагер от Кресина я пересобирал, что-бы там правильно отражалась кирилица

alexmar: а что там нужно подправить?

nick_mi: Потерялся корректированный исходник дебагера, печалька. Завтра попытаюсь вспомнить, где правил. Там исходный текст просто конвертил через OemToAnsi, большего не помню

nick_mi: Корректировка дебагера Кресина. Там надо добавить строку hb_OemToAnsi в следующих местах STATIC FUNCTION SetText( cName, lClear ) . . . FOR i := 1 TO Len( oText:aArray ) IF Chr( 9 ) $ oText:aArray oText:aArray [ i ] := StrTran( oText:aArray [ i ] , Chr( 9 ), Space( 4 ) ) ENDIF oText:aArray [ i ] := hb_oemtoansi( oText:aArray [ i ] ) NEXT STATIC FUNCTION ShowRec( arr, n ) . . . FOR i := 1 TO nFields FOR j := 1 TO 4 arr1 [ i ,j ] := Hex2Str( arr [ ++n ] ) arr1 [ i , j ] := hb_oemToAnsi ( arr1 [ i ,j ]) NEXT NEXT Но это конечно все данные и тексты будет конвертировать. Если есть смешанные данные надо будет вводить в INI переменные и вставлять логику

alexmar: спасибо

alexmar: Dima пишет: alexmar пишет:  цитата: Оказывается нужно было при вызове DbCreateIndex указывать в явном виде имя индексного файла и расширение. Шаманство какое то Придется так же при открытии индексов к базам , расширение указывать явно. 1 Я был неправ. При явном указании расширения Harbour создает индексы с расширениями idx, но внутри структура все-таки cdx файла. Печалько. 2 Проверил совместимость индексов ntx в Clipper 5.2e и Harbour. Похоже совместимы. 3 А вот с совместимостью cdx индексов дела похуже. В режиме чтения они взаимно совместимы. А вот при редактировании получается такая ситуация. Если cdx был создан в Harbour, он и читается и корректируется в Clipper 5.2e вроде-бы без ошибок. А если был создан в Clipper 5.2e, то после его изменения в Harbour при его изменении в Clipper 5.2e возникает внутренняя ошибка 1210 (рассогласование данных и индекса). В Clipper 5.2e для cdx я использовал библиотеку Six3 (rdd SIXCDX) Получается для совместной работы Clipper 5.2e и Harbour можно использовать только индексы ntx, но у меня есть таблицы с memo полями в формате fpt, которые ntx не поддерживают. Тупик какой-то Была мысль прикрутить к Clipper 5.2e rdd dbfcdx от Harbour, но вряд ли из этого что-то получится. Может будут у кого-то идеи по поводу совместной работы Clipper 5.2e и Harbour?

Dima: alexmar пишет: Может будут у кого-то идеи по поводу совместной работы Clipper 5.2e и Harbour? В связке с ADS может получится , только версия ADS должна быть одинаковой для Clipper + соответствующая для Harbour Идем сюда http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=19 и тянем Advantage Client Engine Advantage Clipper RDD или более раннюю версию



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