Автор | Сообщение |
|
| |
Пост 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, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило. Возникли ошибки на этапе линковки: Скрытый текст 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 активно используется в других модулях - но там линкер почему-то ошибок не видит...
| Help, please - что делать и куды бечь ?
|
|
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
| |
Пост N: 14
Зарегистрирован: 24.04.13
|
|
Отправлено: 15.08.13 16:57. Заголовок: По inkeytrap() см. в..
|
|
|
|
| |
Пост N: 121
Зарегистрирован: 08.07.06
|
|
Отправлено: 15.08.13 17:53. Заголовок: azoo пишет: По inke..
azoo пишет: Спасибо. Пригодилось.
|
|
|
|
| |
Пост N: 137
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 17:50. Заголовок: Не получается подруж..
Не получается подружить русский язык и файловую систему. Например: FUNC Main() REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") ? File("текст.!") QUIT RETURN Всегда дает результат .F. Файл разумеется есть, лежит рядом с exe. Если переименовать в латиницу - результат File("text.!") сразу .T. Команда RUN("@echo --- Привет --- ") дает кракозябры на экране. В hbp указал -DHB_LANG_DEFAULT=RU866 -DHB_CODEPAGE_DEFAULT=RU866 Что я еще забыл переключить в настройках ?
|
|
|
|
| Администратор
|
Пост N: 2944
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.08.13 18:06. Заголовок: Есть 2 способа решен..
Есть 2 способа решения этого вопроса: 1. Транслировать имена файлов из cp866 в cp1251 2. Добавить в конец модуля такую функцию: #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // Имена файлов в кодировке OEM { SetFileApisToOEM(); } #pragma ENDDUMP и вызвать ее при старте программы
|
|
|
|
| |
Пост N: 138
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 18:12. Заголовок: Pasha пишет: Есть ..
Pasha пишет: цитата: | Есть 2 способа решения этого вопроса: 1. Транслировать имена файлов из cp866 в cp1251 |
| Переделывать всю программу, искать вызовы файловых функций (а там во всех местах - и FILE() и DIRECTORY() и тд и тп) ... муторно очень... цитата: | 2. Добавить в конец модуля такую функцию: |
| Добавил. RUN("@echo --- Привет ---") теперь пишет нормально, а File() все равно дает .F.
|
|
|
|
| |
Пост N: 139
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 18:56. Заголовок: Попробовал даже так:..
Попробовал даже так: sx := "абв.dbf" sx := HB_TRANSLATE(sx,"RU866","RU1251") ? File(sx) все равно дает .F.
|
|
|
|
| постоянный участник
|
Пост N: 2931
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.08.13 21:05. Заголовок: Попробуй так: FUNC M..
Попробуй так: FUNC Main() REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") sx := "абв.dbf" sx := HB_ANSITOOEM(sx) ? File(sx)
|
|
|
|
| |
Пост N: 140
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 21:51. Заголовок: Andrey пишет: Попр..
Andrey пишет: цитата: | Попробуй так: ... sx := HB_ANSITOOEM(sx) |
| Попробовал. FALSE Поставил наоборот - HB_OEMTOANSI(sx) - заработало. Блин... этож сколько переписывать придется... просто ппц... Неужели нет вариантов ???
|
|
|
|
| постоянный участник
|
Пост N: 1143
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.08.13 22:06. Заголовок: Sergy пишет: Блин....
Sergy пишет: цитата: | Блин... этож сколько переписывать придется... просто ппц... Неужели нет вариантов ??? |
| Лично у меня FUNC Main() REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") ? File("текст.!") QUIT RETURN показало .T. если исходник в 866 странице, ну и .F. если в 1251
|
|
|
|
| |
Пост N: 141
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 22:13. Заголовок: Исходник ведь клиппе..
Исходник ведь клипперовский, конечно он в 866 странице... Базы данных, все сообщения - все работает нормально. А вот с файловой системой какая-то непонятка...
|
|
|
|
| постоянный участник
|
Пост N: 1144
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.08.13 22:22. Заголовок: А какая ось, как зап..
А какая ось, как запускаете программу, что показывает chcp?
|
|
|
|
|
| |
Пост N: 142
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 22:35. Заголовок: Петр пишет: А какая..
Петр пишет: цитата: | А какая ось, как запускаете программу, что показывает chcp? |
| На домашнем компе - XP, запускаю программу из под Far, chcp показывает 866 На работе - сервер 2003 SR3, остальное тоже самое - и из под Far и из проводника тоже самое...
|
|
|
|
| постоянный участник
|
Пост N: 1145
Зарегистрирован: 09.10.06
|
|
Отправлено: 19.08.13 22:41. Заголовок: Ну не знаю, Win 7, F..
Ну не знаю, Win 7, Far 3.0 build 3249, active code page 866 .T.
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 21.04.13
|
|
Отправлено: 19.08.13 22:46. Заголовок: Сначала нужно SetFileApis
proc main Local cfname // set name before SetFileApis - wrong cfname:="тест.!" strfile("1",cfname,.f.) ? file(cfname) SetFileApis() ? file(cfname) inkey(100) // set name after SetFileApis - right cfname:="тест.!" strfile("2",cfname,.f.) ? file(cfname) return #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // { SetFileApisToOEM(); } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 143
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 22:47. Заголовок: Петр пишет: Ну не з..
Петр пишет: цитата: | Ну не знаю, Win 7, Far 3.0 build 3249, active code page 866 .T. |
|
|
|
|
|
| |
Пост N: 144
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 22:56. Заголовок: petr707 пишет: proc..
petr707 пишет: цитата: | proc main Local cfname // set name before SetFileApis - wrong cfname:="тест.!" strfile("1",cfname,.f.) ? file(cfname) SetFileApis() ? file(cfname) inkey(100) // set name after SetFileApis - right cfname:="тест.!" strfile("2",cfname,.f.) ? file(cfname) return #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // { SetFileApisToOEM(); } #pragma ENDDUMP |
| Прикольно. У меня получилось .T. .T. .T. НО имя файла в?бв.! Компилировал припомощи hbp следующего содержания (скопирован с проекта) d:\harbour\contrib\hbnf\hbnf.hbc d:\harbour\contrib\hbct\hbct.hbc d:\harbour\contrib\hbwin\hbwin.hbc d:\harbour\contrib\hbblink\hbblink.hbc -lhbcpage.lib -inc -run -LD:\Harbour\lib\win\bcc -DHB_LANG_DEFAULT=RU866 -DHB_CODEPAGE_DEFAULT=RU866 -prgflag=/v lang_test2.prg Ваще ниче не понимаю...
|
|
|
|
| |
Пост N: 13
Зарегистрирован: 21.04.13
|
|
Отправлено: 19.08.13 23:04. Заголовок: Удалите все файлы, и перезапустите ,старый файл тест.! мешает
Удалите все файлы, и перезапустите ,старый Ваш файл тест.! картинку портит Должно быть два файла в?бв.! ( содержимое="1") и тест.! (содержимое="2") proc main REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") // set name before SetFileApis - wrong cfname:="тест.!" strfile("1",cfname,.f.) ? file(cfname) SetFileApis() ? file(cfname) inkey(100) // set name after SetFileApis - right cfname:="тест.!" strfile("2",cfname,.f.) ? file(cfname) return #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // { SetFileApisToOEM(); } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 145
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 23:05. Заголовок: Вот такой пример: p..
Вот такой пример: proc main Local cfname // set name before SetFileApis - wrong cfname:="тест1.!" strfile("1",cfname) ? file(cfname) SetFileApis() // set name after SetFileApis - right cfname:="тест2.!" strfile("2",cfname) ? file(cfname) return #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // { SetFileApisToOEM(); } #pragma ENDDUMP дает .T. .T. и два файла: в?бв1.! и в?бв2.!
|
|
|
|
| |
Пост N: 146
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.08.13 23:06. Заголовок: почти синхронно отве..
почти синхронно ответили... ща попробую Ваш пример
|
|
|
|
| |
Пост N: 14
Зарегистрирован: 21.04.13
|
|
Отправлено: 19.08.13 23:08. Заголовок: Не работает SetFileApis()
Не работает SetFileApis()
|
|
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|