Автор | Сообщение |
|
| постоянный участник
|
Пост N: 6492
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.10.19 20:00. Заголовок: Переход с BCC 5.5 на BCC 5.8 и BCC 7.30
Что то непонятки пошли в новом компиляторе. Собираю часть проекта и линкую основную библиотеку. Выдаёт теперь ошибку сборки, а как исправить не знаю: Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::__nullref' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::__getRep(unsigned int, unsigned int)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::__rw_stdexcept_BadAllocException' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::__rw_stdexcept_NoNamedException' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::rwse_OutOfRange' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external '__rwstd::except_msg_string::except_msg_string(const char *, ...)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay Error: Unresolved external 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char, std::char_traits<char>, std::allocator<char> >(const char *, const std::allocator<char>&)' referenced from D:\TEMP\TEST\TBRW_TABLE2.LIB|overlay hbmk2[form_Zaivka]: Error: Running linker. 2 Файл overlay.cpp в библиотеке Tbrw_Table2.lib прекрасно работал под BCC 5.51 А в 5.8 что-то конфликтует... Как быть ?
|
|
|
Ответов - 91
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 7615
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.23 17:29. Заголовок: SergKis пишет: но э..
SergKis пишет: Попробовал... Хрень получается. Месяца и недели правильно выходят, но окно тогда остаётся в той кодировке, какое первое окно открыли. Т.е. смена кодировки окна не происходит.
|
|
|
|
| постоянный участник
|
Пост N: 4454
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.23 17:37. Заголовок: Andrey пишет Месяца ..
Andrey пишет цитата: | Месяца и недели правильно выходят, но окно тогда остаётся в той кодировке, какое первое окно открыли. Т.е. смена кодировки окна не происходит. |
| Надо для каждого языка свое окно, т.к. на нем и в контролах надо исп. свой языковый фонт при создании, т.е. для RU1251 свое окно, для UA1251 свое
|
|
|
|
| постоянный участник
|
Пост N: 7616
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.23 17:43. Заголовок: SergKis пишет: Надо..
SergKis пишет: цитата: | Надо для каждого языка свое окно, т.к. на нем и в контролах надо исп. свой языковый фонт при создании, т.е. для RU1251 свое окно, для UA1251 свое |
| Так я это и делаю. Только если оба окна поднять и переключаться между ними, то язык не переключается !!! Выслал пример к тебе.
|
|
|
|
| постоянный участник
|
Пост N: 7618
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.23 22:38. Заголовок: SergKis пишет: Для ..
SergKis пишет: цитата: | Для hb данных при переключении на яз. окно ставить свой hb_CdpSelect(...) ..., но это надо пробовать. |
| Это понятно что нужно ставить. Непонятно другое !!! Сделал проверку в TsbViewer.prg: FUNCTION myLangRecover(cAlias,cSetCP,cSelCdp,cLngSel) LOCAL aMonth, nI aMonth := Array(12) FOR nI := 1 TO 12 aMonth[nI] := " " + LOWER( NTOCMONTH( nI ) ) + " " NEXT ? ProcNL(), cAlias,cSetCP,cSelCdp,cLngSel, hb_valtoexp(aMonth) // строка 447 DO EVENTS hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) hb_LangSelect(cLngSel) IF LEN(cAlias) > 0 IF ( Select( cAlias ) > 0 ) dbSelectArea( cAlias ) ENDIF ENDIF ? ProcNL(), hb_SetCodepage(), hb_CdpSelect(), hb_LangSelect() // строка 459 aMonth := Array(12) FOR nI := 1 TO 12 aMonth[nI] := " " + LOWER( NTOCMONTH( nI ) ) + " " NEXT ?? hb_valtoexp(aMonth) DO EVENTS RETURN NIL При первом входе в эту функцию месяца правильные, потом фигню выдают. Почему ? Что ещё надо для правильного переключения языка ? Почему ломается вывод месяцов на одном и том же языке - RU1251 ? Такой же результат будет и в отдельном примере !
|
|
|
|
| постоянный участник
|
Пост N: 4455
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.23 23:57. Заголовок: Andrey Смотри внимат..
Andrey Смотри внимательно 1 строка hb_LangSelect() => ru.RU1251 2 строка hb_LangSelect() => ru.RU1251.RU1251 смотри ф-ю hb_LangSelect() https://github.com/Petewg/harbour-core/wiki/hb_L и задавай параметры правильно, т.е. hb_LangSelect("ru") или hb_LangSelect( , "RU1251") цитата: | Почему ломается вывод месяцов на одном и том же языке - RU1251 ? |
| Потому и ломается
|
|
|
|
| постоянный участник
|
Пост N: 7619
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.11.23 16:24. Заголовок: SergKis пишет: и за..
SergKis пишет: цитата: | и задавай параметры правильно |
| Сделал, всё равно НЕ РАБОТАЕТ !!! Отдельный пример к тебе положил.
|
|
|
|
| постоянный участник
|
Пост N: 4456
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.11.23 20:28. Заголовок: Andrey пишет Сделал,..
Andrey пишет цитата: | Сделал, всё равно НЕ РАБОТАЕТ !!! в примере НЕ РАБОТАЕТ повтор вызова языка |
| Разовая уст. языка (по списку) работает. Пример Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #define PROGRAM "Windows with different languages" #include "hmg.ch" REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866 // русский язык REQUEST HB_CODEPAGE_UA1251, HB_CODEPAGE_UA866 // украинский язык REQUEST HB_LANG_BEWIN // белорусский язык /////////////////////////////////////////////////////////////////// INIT PROCEDURE Sets_EVN() LOCAL cFont := "DejaVu Sans Mono", nSize := 14 LOCAL cLog := "_msg.log" SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN SET DATE TO GERMAN // это и есть SET DATE FORMAT "DD.MM.YYYY" SET EPOCH TO 2000 SET EXACT ON SET SOFTSEEK ON SET CENTURY ON // ООП используем SET OOP ON // new log filename for debug output _SetGetLogFile( cLog ) ; DELETEFILE(cLog) // основной Default фонт программы SET FONT TO cFont, nSize // фонт для HMG_Alert() и Alert...() ф-ий DEFINE FONT DlgFont FONTNAME cFont SIZE nSize RETURN /////////////////////////////////////////////////////////////////// PROCEDURE Main(...) LOCAL i FOR i := 0 TO 6 mySetLang( i ) NEXT Return FUNCTION mySetLang(nVal) LOCAL cSetCP, cSelCdp, cLngSel LOCAL o, cTmp, oIniLang, cIniLang IF nVal == 0 SET CODEPAGE TO ENGLISH SET LANGUAGE TO ENGLISH ELSEIF nVal == 1 SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN ELSEIF nVal == 2 SET CODEPAGE TO UKRAINIAN SET LANGUAGE TO UKRAINIAN ELSEIF nVal == 3 SET LANGUAGE TO BYELORUSSIAN ELSEIF nVal == 4 SET CODEPAGE TO GERMAN SET LANGUAGE TO GERMAN ELSEIF nVal == 5 SET CODEPAGE TO SPANISH SET LANGUAGE TO SPANISH ELSEIF nVal == 6 SET CODEPAGE TO ITALIAN SET LANGUAGE TO ITALIAN ENDIF cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := hb_LangSelect() IF "be." $ cLngSel ; cTmp := lower("BEWIN") ELSE ; cTmp := lower(cSelCdp) ENDIF // --- Создадим ini языковый в .\RES, если ini нет cIniLang := ".\_" + cTmp + ".ini" IF ! hb_FileExists( cIniLang ) oIniLang := TIniData():New( , .T., .T. ) oIniLang:cIni := cIniLang o := oIniLang o:cCommentBegin := hb_LangName() o:cMonth := oHmgData() // [CMONTH] секция FOR nI := 1 TO 12 o:cMonth:Set( StrZero(nI, 2), lower( NTOCMONTH( nI ) ) ) NEXT o:cDow := oHmgData() // [CDOW] секция FOR nI := 1 TO 7 o:cDow:Set( hb_ntos(nI), lower( NTOCDOW( nI ) ) ) NEXT o:Write() ENDIF RETURN Nil
|
|
|
|
|
| постоянный участник
|
Пост N: 7620
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.11.23 20:48. Заголовок: SergKis пишет: Разо..
SergKis пишет: цитата: | Разовая уст. языка (по списку) работает. |
| Да ! А потом при нажатии на форме доп.кнопок, меню и т.д. - НЕ РАБОТАЕТ ! Окно же не последнее, много чего потом делать нужно будет.
|
|
|
|
| постоянный участник
|
Пост N: 4457
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.11.23 20:57. Заголовок: Andrey Посмотри мой..
Andrey Посмотри мой пример, сначала ставится INIT PROCEDURE Sets_EVN() LOCAL cFont := "DejaVu Sans Mono", nSize := 14 LOCAL cLog := "_msg.log" SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN ... потом повторно ставится FUNCTION mySetLang(nVal) LOCAL cSetCP, cSelCdp, cLngSel LOCAL o, cTmp, oIniLang, cIniLang IF nVal == 0 SET CODEPAGE TO ENGLISH SET LANGUAGE TO ENGLISH ELSEIF nVal == 1 SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN ELSEIF nVal == 2 ... получаемый _ru1251.ini секции и данные в них правильные. цитата: | А потом при нажатии на форме доп.кнопок, меню и т.д. - НЕ РАБОТАЕТ ! |
| Думаю, оконный интерфейс по языку в однобайтовой сборке hmg должен действовать на всю программу, т.е. "новый" язык новый запуск exe с установкой этого языка.
|
|
|
|
| постоянный участник
|
Пост N: 7622
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.11.23 21:06. Заголовок: SergKis пишет: Дума..
SergKis пишет: цитата: | Думаю, оконный интерфейс по языку в однобайтовой сборке hmg должен действовать на всю программу, т.е. "новый" язык новый запуск exe с установкой этого языка. |
| Конечно согласен с этим, но мне всегда хочется чуток расширить границы... и универсальности ... Допустим в моей большой программе нужно использовать печать на украинском языке в отдельном окне. Можно указать явно языки, тогда в окне месяца правильно показываются, НО если использовать НЕ MODAL окно для этого, то возможна потеря языка в основной программе.
|
|
|
|
| постоянный участник
|
Пост N: 4458
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.11.23 21:21. Заголовок: Andrey пишет Можно у..
Andrey пишет цитата: | Можно указать явно языки, тогда в окне месяца правильно показываются, НО если использовать НЕ MODAL окно для этого, то возможна потеря языка в основной программе. |
| Используй для этих нескольких окон запуск своего же exe с параметром nMode > 0, Будет аналог STANDARD и ставишь нужный язык и голова не болит
|
|
|
Ответов - 91
, стр:
1
2
3
4
5
All
[только новые]
|
|