Форум » [x]Harbour » Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка" » Ответить

Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"

Sergy: Добрый день, уважаемые коллеги. Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении. Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!" Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило. Возникли ошибки на этапе линковки: [more]Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_ENVPARAM' referenced from D:\HB\TRADE100.OBJ Error: Unresolved external '_HB_FUN_INKEYTRAP' referenced from D:\HB\TRADE226.OBJ Error: Unresolved external '_HB_FUN_DISKFREE' referenced from D:\HB\TRADE222.OBJ Error: Unresolved external '_HB_FUN_DISKTOTAL' referenced from D:\HB\TRADE222.OBJ Error: Unresolved external '_HB_FUN_BIOSDATE' referenced from D:\HB\TRADE.OBJ Error: Unresolved external '_HB_FUN_FT_ONTICK' referenced from D:\HB\TRADE.OBJ Error: Unresolved external '_HB_FUN_FT_ONIDLE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_FT_IAMIDLE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_TRAPANYKEY' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_KEYSEND' referenced from D:\HB\TRADE200.OBJ 1) Так понимаю, это ошибки из-за того, что не находятся некоторые функции из активно используемых CT3/Nanforum Toolkit ? Что делать с ними ? Отказываться ? Или есть заменители ? Error: Unresolved external '_HB_FUN_STACKFREE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCUSE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCAVL' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLILOCTOT' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCUSE' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCAVL' referenced from D:\HB\TRADE200.OBJ Error: Unresolved external '_HB_FUN_BLISTCTOT' referenced from D:\HB\TRADE200.OBJ 2) Это - ошибки из-за вызовов встроенных в Blinker функций, без них легко обойтись в принципе... Error: Unresolved external '_HB_FUN_STRNUM2ARRAY' referenced from D:\HB\TRADE208.OBJ Error: Unresolved external '_HB_FUN_CMJS_EXTRACTPARAMS' referenced from D:\HB\TRADE206.OBJ Error: Unresolved external '_HB_FUN_SELECTSTOCKS' referenced from D:\HB\TRADE220.OBJ Error: Unresolved external '_HB_FUN_APPLYSERTCHAGES' referenced from D:\HB\TRADE221.OBJ Error: Unresolved external '_HB_FUN_APPLYCARGOCHAGES' referenced from D:\HB\TRADE221.OBJ Error: Unresolved external '_HB_FUN_APPLYPRICECHAGES' referenced from D:\HB\TRADE221.OBJ 3) А вот это - самое странное - это мои функции, причем некоторые из них вызываются многократно из других модулей. Например ApplyCargoChanges является STATIC в самом модуле TRADE221 - почему линковщик ее не видит, наряду с парой Apply... других ? SelectStocks активно используется в других модулях - но там линкер почему-то ошибок не видит... [/more] Help, please - что делать и куды бечь ?

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

Sergy: petr707 пишет: Удалите все файлы, и перезапустите ,старый Ваш файл тест.! картинку портит Должно быть два файла в?бв.! ( содержимое="1") и тест.! (содержимое="2") Все удалил получил две шутки TRUE и ОДИН файл в?бв.! с содержимым 2

Sergy: petr707 пишет: Не работает SetFileApis() Он работает, но как-то "не до конца". Без него RUN("@echo -- Привет --") дает кракозябры. С ним - всё нормально.

petr707: Запуск test.exe //info -что показывает ?


Sergy: petr707 пишет: Запуск test.exe //info -что показывает ? Harbour Terminal: Windows native console Harbour 3.0.0 (Rev. 16951) Windows XP 5.1.2600 Service Pack 3 DS avail=1692828KB OS avail=2079244KB EMM avail=0KB MemStat:Off MT:Off .T. .T. .T.

petr707: RUN("@echo -- Привет --") дает кракозябры еще раз проверяем кодовую страницу PRG -файла

Sergy: petr707 пишет: еще раз проверяем кодовую страницу PRG -файла Вот ascii-коды символов, входящих в слово "Привет", которые выводит встроенный редактор FAR: 143 224 168 162 165 226

petr707: Чтобы не зависеть от кодовой страницы Prg-файла замените cfname:="тест.!" на cfname:=CHR(226)+CHR(165)+...//"тест.!"

Sergy: petr707 пишет: Чтобы не зависеть от кодовой страницы Prg-файла замените cfname:="тест.!" на cfname:=CHR(226)+CHR(165)+...//"тест.!" сделал. результат не изменился. три штуки TRUE один файл с именем в кракозябрах с содержимым "2"

petr707: Начинаем "шаманить" После строки HB_CDPSELECT("RU866") Добавляем одну строку HB_GtInfo(HB_GTI_CODEPAGE, 255) // oem_charset //HB_GtInfo(HB_GTI_CODEPAGE, 0 ) // ansi_charset // HB_SETTERMCP("RU256")//, "RU1251", .t. )

Sergy: petr707 пишет: Начинаем "шаманить" После строки HB_CDPSELECT("RU866") Добавляем одну строку HB_GtInfo(HB_GTI_CODEPAGE, 255) // oem_charset ┌────────────────────────────────────────────┐ │ Error BASE/1003 Переменная не существует: │ │ HB_GTI_CODEPAGE │ │ │ │ Quit Retry │ └────────────────────────────────────────────┘ Подключил hbgtinfo.ch результат - один в один - три TRUE, один файл с названием из кракозябр и содерджимым 2 Поставил HB_GtInfo(HB_GTI_CODEPAGE, 0) - тоже самое

petr707: Похоже дело не в русских именах файлов а вообще с кодовой страницей Предлагаю скомпилировать и выполнить тесты из \hb30\tests\ можно начать с gtchars.prg

Sergy: petr707 пишет: можно начать с gtchars.prg скомпилировал, боксики-квадратики видны ok

Sergy: вместо польских поставил RU866, вроде все работает: Или я чего не понимаю ?

Sergy: Вот что нашел тут: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365534(v=vs.85).aspx 8-bit console apps using the OEM codepage Note: If you are writing/porting an 8-bit console application, in addition to calling SetFileApisToOem() you should also call setlocale(LC_ALL, ".OCP") followed by _setmbcp(_MB_CP_LOCALE). Может этих двух вызовов и не хватает?

Sergy: Помогите плиз...

Dima: XP SP2 Текст в DOS кодировке (набирался в FAR) Harbour 3.2.0dev (Rev. 18899) [pre2] FUNC Main() REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") fclose(fcreate("текст.!")) ? File("текст.!") // .T. RUN("@echo -- Привет --") // и тут все норм на экране QUIT RETURN [/pre2]

Sergy: Dima пишет: Harbour 3.2.0dev я бился и так и эдак - походу дело в версии Harbour. Нужно пробовать 3.2 вместо 3.0. Подскажите плиз - с чего начать. Там так понимаю, все идет в исходниках, нужно саму систему сначала скомпилить...

Dima: Sergy Сливай , распаковывай и собирай http://github.com/harbour/core/archive/master.zip

Pasha: Sergy пишет: Помогите плиз... Действительно, необходимо использовать Harbour 3.2 Это уникодная сборка, а 3.0 - еще не уникодная. 3.2 преобразует имена файлов в UNICODE, и проблем с именами не возникнет, если указана cp866 Вызов SetFileApis в этом случае не нужен.

Sergy: Pasha пишет: Действительно, необходимо использовать Harbour 3.2 Это уникодная сборка, а 3.0 - еще не уникодная. 3.2 преобразует имена файлов в UNICODE, и проблем с именами не возникнет, если указана cp866 Вызов SetFileApis в этом случае не нужен. Все заработало как нужно. Правда EXE стал вместо 2,5 мегов почти 4 - но кого это сегодня заботит... Уважаемые старожилы - предупреждайте новичков о таких вилах, спрятанных в стоге сена по названием Harbour 3.0. Спасибо за поддержку и помощь.



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