Автор | Сообщение |
|
| постоянный участник
|
Пост 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: 6493
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.10.19 20:08. Заголовок: Файл error.log невоз..
Файл error.log невозможно скопировать на форум, если в путях используются русские буквы. Там в имени файла идут сразу кракозябы.... Как от этого избавиться ? Для MSVC ставил в батник так: @echo off chcp 65001 echo ------- Assembly MSVC 2017 for 32 bits --------- call "D:\Program Files\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 ....
|
|
|
|
| постоянный участник
|
Пост N: 1567
Зарегистрирован: 27.01.07
|
|
Отправлено: 26.10.19 20:29. Заголовок: Andrey пишет: Файл ..
Andrey пишет: цитата: | Файл error.log невозможно скопировать на форум, если в путях используются русские буквы. Там в имени файла идут сразу кракозябы.... Как от этого избавиться ? |
| И чё, проводник или Far не может открыть эту папку? Уверен?
|
|
|
|
| постоянный участник
|
Пост N: 6494
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.10.19 21:38. Заголовок: PSP пишет: И чё, пр..
PSP пишет: цитата: | И чё, проводник или Far не может открыть эту папку? Уверен? |
| Фар открывает, а вот в error.log - сплошные кракозябы ! Вот так это выглядит: Как сделать чтобы вместо кракозяб были русские буквы ? Думаю если сделать другие языки - тоже будут кракозябы...
|
|
|
|
| постоянный участник
|
Пост N: 6495
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.10.19 22:12. Заголовок: Собрал свой большой ..
Собрал свой большой проект - иконки (большая часть) перепутаны... Финиш.... На кнопках совершенно другие иконки, блин почему ? BCC 5.5 собирал нормально, если были дубликаты, то дубликаты отбрасывал. Блин... Опять хирургическая правка... У меня ресурсных файлов на 12 Мб - заново их разгребать нужно... Взял в последней версии МиниГуи поменял везде путь MG_BCC=c:\Bcc58 на MG_BCC=c:\Bcc55 Проги собираются нормально, иконки показываются правильно. Единственно когда запрашиваешь компилятор, то показывает: Harbour 3.2.0dev (r1909261630) Borland C++ 5.8.2 (32-bit) Harbour MiniGUI Extended Edition 19.10 (32-bit) Блин, остаюсь пока на BCC 5.5.1 И с лицензией проблема у меня будет тоже. Григорий - оставь библиотеки под BCC 5.5.1 , а кто хочет, пускай на другом работает. Хотя на хХарборе на сайте тоже выложен сейчас 5.8.2 http://www.xharbour.org/index.asp?page=download/windows/required_win А вообще то лучше перейти на MICROSOFT VISUAL STUDIO COMMUNITY 2017 там классная лицензия: https://visualstudio.microsoft.com/ru/license-terms/mlt553321/?rr=https%3A%2F%2Fwww.google.com.sg%2F
|
|
|
|
| |
Пост N: 7133
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.10.19 23:02. Заголовок: Andrey пишет: Взял..
Andrey пишет: цитата: | Взял в последней версии МиниГуи поменял везде путь MG_BCC=c:\Bcc58 на MG_BCC=c:\Bcc55 |
| Чуйка у меня что версия 58 какая то кривая и взята не понятно где , сборщик ресурсов при запуске выдает такую же версию как в 55 Andrey пишет: цитата: | Блин, остаюсь пока на BCC 5.5.1 |
| Тоже поправлю "дороги"
|
|
|
|
| постоянный участник
|
Пост N: 833
Зарегистрирован: 13.10.05
|
|
Отправлено: 27.10.19 09:20. Заголовок: Пресобрал с использо..
Пресобрал с использованием IDE несколько программ на новой версии компилятора . Вроде всЁ работает. В одной программе появилась ошибка в строке цитата: | SetProperty("DISP_Edit","Cmb_GRYP_SDOR","DisPlayEdit",.f.) |
| Программу не пересобирал с февраля с.г., может ошибка и не связано с Борланд 58, а с изменениями внесенными в Харбоур.
|
|
|
|
| |
Пост N: 7134
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.10.19 14:21. Заголовок: Andrey пишет: А воо..
Andrey пишет: цитата: | А вообще то лучше перейти на MICROSOFT VISUAL STUDIO COMMUNITY 2017 |
| А там не придется таскать с собой в чумадане доп. DLL от M$ ?
|
|
|
|
| постоянный участник
|
Пост N: 6496
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.10.19 15:57. Заголовок: Dima пишет: А там н..
Dima пишет: цитата: | А там не придется таскать с собой в чумадане доп. DLL от M$ ? |
| Нет. Я уже пробовал собирать Tsb_composite-vc17.exe на MSVC (это навороченный бровс, см. у Григория на сайте) Один ехе-ник и всё. Размер примерно одинаков, как и для BCC. Есть мост МиниГуи и C# для MSVC. BCC не поддерживается, так как С-компилятор старый и не по стандарту Си сделан.
|
|
|
|
| постоянный участник
|
Пост N: 6500
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.19 13:41. Заголовок: Фигня какая то получ..
Фигня какая то получается... Собрал свой проект на сборку 19.10 (Update 1) только на BCC 5.5.1 У юзеров перестала открываться карточка. Прога тупо виснет и всё помогает только "снятие задачи" через Диспетчер задач. Вернул проект на предыдущую сборку, карточка открывается... Free Open Source Software: Harbour 3.2.0dev (r1904111533) Free Compiler: Borland C++ 5.5.1 (32-bit) Free Gui library: Harbour MiniGUI Extended Edition 19.08 (32-bit) Беда что-то с BCC 5.8.2. Сборка проекта на BCC 5.8.2 идёт нормально только все иконки у меня в проекте перепутаны !!! Разбираться с этим нет времени, остаюсь на старом BCC 5.5.1. Можно ли получить либы МиниГуи на BCC 5.5.1 ?
|
|
|
|
| постоянный участник
|
Пост N: 6501
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.19 15:14. Заголовок: Что то макрос для ба..
Что то макрос для базы в новом МиниГуи ( поставил последний 19.10 Update 2 ) перестал работать... Т.е. есть такое выражение cYear := HB_NtoS( YEAR((cAlias)->DateNach) ) cRet := cYear+'г. : ' + (cAlias)->&cPole Если (cAlias)->DateNach == CTOD("") то карточка вешается. В предыдущем Харборе это работало, возвращало " 0г. : " Вывод был через: // Простая обработка ошибок bErrHandler := ERRORBLOCK( { | VAR | BREAK( VAR ) } ) BEGIN SEQUENCE // вывод LABEL RECOVER MG_Stop( cMsg , "ОШИБКА!" ) END SEQUENCE ERRORBLOCK( bErrHandler )
|
|
|
|
| moderator
|
Пост N: 1617
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.10.19 15:35. Заголовок: Andrey пишет: Можно..
|
|
|
|
|
| постоянный участник
|
Пост N: 6502
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.19 17:55. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ ! Вопрос такой возник. Я пере собрал minigui.lib через C:\MiniGUI\SOURCE\BuildLib.bat Потом пере собрал BuildLib.bat через C:\MiniGUI\SOURCE\TsBrowse\BuildLib.bat Скомпилировал заново (удалил все OBJ) свой проект, но все равно в проекте выдаёт: Borland C++ 5.8.2 (32-bit) Почему ? Что ещё нужно пере собрать ?
|
|
|
|
| moderator
|
Пост N: 1618
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.10.19 18:09. Заголовок: Andrey пишет: Что е..
Andrey пишет: цитата: | Что ещё нужно пере собрать ? |
| Ничего Просто используй Харбор из предыдущей сборки 19.08
|
|
|
|
| постоянный участник
|
Пост N: 6503
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.19 18:11. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Просто используй Харбор из предыдущей сборки 19.08 |
| Там нет новых функций для примера MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu
|
|
|
|
| постоянный участник
|
Пост N: 6504
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.10.19 15:12. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Установил эти либы. Скомпилировал заново (удалил все OBJ) свой проект, но все равно в проекте выдаёт: Borland C++ 5.8.2 (32-bit) Почему так ?
|
|
|
|
| moderator
|
Пост N: 1619
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.10.19 22:01. Заголовок: Andrey пишет: Почем..
Andrey пишет: Потому, что используемый для сборки программы Харбор был собран с помощью BCC 5.8.2 Как исправить, я уже написал выше: gfilatov2002 пишет: цитата: | Просто используй Харбор из предыдущей сборки 19.08 |
|
|
|
|
|
| постоянный участник
|
Пост N: 6505
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.10.19 22:56. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Как исправить, я уже написал выше: |
| Блин, не понял с первого раза.... Извиняюсь. Спасибо !
|
|
|
|
| |
Пост N: 83
Зарегистрирован: 22.04.15
|
|
Отправлено: 09.11.19 10:55. Заголовок: В смысле ? Устанавли..
В смысле ? Устанавливать hmg-19.10-setup.exe ? или пока на 19.08 посидеть
|
|
|
|
| постоянный участник
|
Пост N: 6511
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.11.19 13:03. Заголовок: Новичок пишет: Уста..
Новичок пишет: цитата: | Устанавливать hmg-19.10-setup.exe ? или пока на 19.08 посидеть |
| Решать нужно самому ! Andrey пишет: цитата: | Взял в последней версии МиниГуи поменял везде путь MG_BCC=c:\Bcc58 на MG_BCC=c:\Bcc55 Проги собираются нормально, иконки показываются правильно. |
|
|
|
|
|
| постоянный участник
|
Пост N: 6512
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.11.19 19:04. Заголовок: Новичок пишет: Уста..
Новичок пишет: цитата: | Устанавливать hmg-19.10-setup.exe ? или пока на 19.08 посидеть |
| Забыл добавить. Пример-заготовка (универсальная менюшка на многие задачи) - папка MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu на версии 19.08 не соберётся....
|
|
|
|
| постоянный участник
|
Пост N: 7237
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.03.22 09:59. Заголовок: Andrey пишет: Собра..
Andrey пишет: цитата: | Собрал свой большой проект BCC 5.8 - иконки (большая часть) перепутаны... Финиш.... На кнопках совершенно другие иконки, блин почему ? BCC 5.5 собирал нормально, если были дубликаты, то дубликаты отбрасывал. Блин... Опять хирургическая правка... У меня ресурсных файлов на 12 Мб - заново их разгребать нужно... |
| Это писал ещё 26.10.19. Дошли руки до картинок - разгрёб двойные ссылки на ресурсы, ошибок нет. Думал что теперь BCC 5.8 нормально будет показывать иконки... Фиг-вам Опять ерунда, иконки другие вместо нужных. Как исправить данную проблему ? P.S. Кол-во файлов *.rc - 37 штук, объём картинок в ресурсах примерно 19 Мбайт
|
|
|
|
|
| постоянный участник
|
Пост N: 7394
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.06.23 12:58. Заголовок: Кол-во файлов *.rc -..
Кол-во файлов *.rc - 37 штук, объём картинок в ресурсах примерно 19 Мбайт Пробую собрать ехе-ник с помощью BCC 5.8 уже на главном меню вместо нужных иконок - показываются другие. Это как то лечится ? Как исправить данную проблему ? Есть более современный и бесплатный компилятор BCC 7.30 (32-bit), можно оттуда взять линковщик ? На сайте xHarbour Required tools for Windows есть же Embarcadero 32-bit BCC 7.40 Compiler (Evaluation Only!) Embarcadero 64-bit BCC 7.30 Compiler (Evaluation Only!) А какая лицензия на BCC 7.40 ? https://www.embarcadero.com/ru/free-tools/ccompiler Не совсем понятно - на сайте пишут Бесплатный компилятор C++ Лицензия на коммерческое использование - Один пользователь ???? Один пользователь на использование моей программы ? Или по другому трактуется ?
|
|
|
|
| постоянный участник
|
Пост N: 1644
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.06.23 16:07. Заголовок: Andrey пишет: Лицен..
Andrey пишет: цитата: | Лицензия на коммерческое использование - Один пользователь ???? Один пользователь на использование моей программы ? Или по другому трактуется ? |
| Да пох! Параллельный импорт!))
|
|
|
|
| |
Пост N: 1935
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.06.23 17:15. Заголовок: Во всех версиях компилятор ресурсов 1 и тот же.
На сколько я помню во всех версиях компилятор ресурсов 1 и тот же Скорее всего, проблема именно в нем. Рекомендую. Заменить brc на другой.
|
|
|
|
| moderator
|
Пост N: 2139
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.06.23 18:28. Заголовок: Andrey пишет: Один ..
Andrey пишет: цитата: | Один пользователь на использование моей программы ? |
| Пользователь в данном контексте означает разработчик программы (т.е. можно свободно использовать компилятор одним разработчиком). Вот его определение в файле лицензии: (c) "Customer" means the person installing or using the Licensed Material or for whose benefit the Licensed Material is being installed or used.
|
|
|
|
| постоянный участник
|
Пост N: 7395
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.06.23 20:12. Заголовок: gfilatov2002 пишет: ..
PSP пишет: цитата: | Да пох! Параллельный импорт!)) |
| gfilatov2002 пишет: цитата: | (т.е. можно свободно использовать компилятор одним разработчиком). |
| Тогда это классно ! Какое решение будет по переходу МиниГуи на новый компилятор ? Когда ждать то ?
|
|
|
|
| moderator
|
Пост N: 2140
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.06.23 21:16. Заголовок: Andrey пишет: Какое..
Andrey пишет: цитата: | Какое решение будет по переходу МиниГуи на новый компилятор ? |
| Если будет интерес и поддержка такого перехода от пользователей библиотеки, то хоть завтра Ниже приведено содержание готового sfx архива с избранными (не всеми) примерами: ------------------------------------------------------------- Minigui Ex Package (build date: 28.05.2023) ------------------------------------------------------------- Components versions: -------------------- Harbour MiniGUI Extended Edition 23.04 (Update 2) Harbour 3.2.0dev (r2305191429) Harbour Make (hbmk2) 3.2.0dev (r2023-05-19 14:29) Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
|
|
|
|
| постоянный участник
|
Пост N: 7396
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.06.23 21:51. Заголовок: Народ, отзовитесь ! ..
Народ, отзовитесь ! Кому интересен переход на Embarcadero C++ 7.30 ?
|
|
|
|
| |
Пост N: 1936
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.06.23 09:51. Заголовок: Andrey пишет: Народ..
Andrey пишет: цитата: | Народ, отзовитесь ! Кому интересен переход на |
| Потенциально интересен, но пока не понимаю что это дает кроме циферек. Как показывает практика, новые циферки не только решают часть старых проблем, но часто приносят новые.
|
|
|
|
| moderator
|
Пост N: 2141
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.06.23 10:46. Заголовок: Haz пишет: пока не ..
Haz пишет: цитата: | пока не понимаю что это дает |
| Согласен, поэтому и не торопился с обновлением, но время то идет... Кстати, есть один нюанс: вам НЕ удастся собрать Харбор для этого компилятора стандартным образом из-за проблем с библиотекой кодировки. Поэтому я применяю специальный режим сборки, а затем пересобираю утилиту hbmk2 с использованием исправленной библиотеки кодировки.
|
|
|
|
| постоянный участник
|
Пост N: 7397
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.06.23 11:02. Заголовок: Haz пишет: Потенциа..
Haz пишет: цитата: | Потенциально интересен, но пока не понимаю что это дает кроме циферек. |
| Одну проблему решает. Заменил в BCC 5.8 всё кроме bcc32.exe brc32.exe brcc32.exe cpp32.exe Т.е. записал новые версии Embarcadero Implib Version 3.4.0 Copyright (c) 1991-2016 Embarcadero Technologies, Inc. Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc. И о чудо... Иконки на кнопках правильные !!!
|
|
|
|
|
| постоянный участник
|
Пост N: 7398
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.06.23 11:13. Заголовок: Вторая проблема. Гри..
Вторая проблема. Григорий, что мне делать ? Прога собирается на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2305191429) - родной Built on: May 20 2023 Last ChangeLog entry: 2023-05-19 16:29 UTC+0200 Przemyslaw Czerpak ChangeLog ID: bed7485bc7df1a6d7545e867dc332269d1f75d85 Вылет идёт сразу при старте программы !!! Time from start: 0 days 0 hours 0 mins 1 secs Error BASE/1004 Message not found: TWNDDATA:EVENT Args: [1] = O TWNDDATA --------------------------------- Stack Trace --------------------------------- Called from __ERRRT_SBASE(0) Called from TWNDDATA:ERROR(0) Called from (b)HBOBJECT(0) Called from TWNDDATA:MSGNOTFOUND(0) Called from TWNDDATA:EVENT(0) Called from MAIN(181) in module: Source\main.prg ----------------------------- System Information ------------------------------ Available memory...: 9179 MB Current disk.......: W Free disk space....: 860383 MB Operating system...: Windows 10 10.0 MiniGUI version....: Harbour MiniGUI Extended Edition 23.04.2 (32-bit) ANSI Harbour version....: Harbour 3.2.0dev (r2305191429) Harbour built on...: May 20 2023 10:05:07 C/C++ compiler.....: Borland C++ 5.8.2 (32-bit) Multi Threading....: YES VM Optimization....: YES Если прогу собираею на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2301231146) - взял с версии минигуи от 23.01 (Release) Built on: Jan 23 2023 Last ChangeLog entry: 2023-01-23 12:46 UTC+0100 Przemyslaw Czerpak ChangeLog ID: a6a86c100291b3ed33a2a0a680f0e5a17d627ce0 Вылета из программы НЕТ, работает отлично !!! Строка кода где вылетает вообще НЕПОНЯТКА ! WITH OBJECT This.Object ..... //!!! общее событие для вызова из других программ :Event(111, {|ow,ky,cdata| cdata := hb_defaultValue(cdata, "") _logfile(.t.,"----[ Событие 111 ]--- " + ProcNL() ) _logfile(.t.," ow=",ow,"xPar=",ky,"cdata=",cdata ) _logfile(.t.," ow:Name",ow:Name,"ow:Handle",ow:Handle ) OnWmCopyData(cData) Return Nil }) строка 181 ....
|
|
|
|
| постоянный участник
|
Пост N: 4284
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.06.23 15:52. Заголовок: Andrey Попробуй без..
Andrey Попробуй без конструкции WITH ... END WITH, т.е. все :Event(...) через переменную o := This.Object ... o:Event(...) ... o:Event(111, {|ow,ky,cdata| cdata := hb_defaultValue(cdata, "") _logfile(.t.,"----[ Событие 111 ]--- " + ProcNL() ) _logfile(.t.," ow=",ow,"xPar=",ky,"cdata=",cdata ) _logfile(.t.," ow:Name",ow:Name,"ow:Handle",ow:Handle ) OnWmCopyData(cData) Return Nil }) ...
|
|
|
|
| постоянный участник
|
Пост N: 7399
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.06.23 16:19. Заголовок: SergKis пишет: Попр..
SergKis пишет: цитата: | Попробуй без конструкции WITH ... END WITH, т.е. все :Event(...) через переменную |
| Нет, так же падает прога...
|
|
|
|
| постоянный участник
|
Пост N: 4285
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.06.23 16:29. Заголовок: Andrey пишет Попроб..
Andrey пишет [quote]` Попробуй ф-ю, перед строкой снятия, из примера, для объекта переменной o (TWNDDATA) Скрытый текст
////////////////////////////////////////////////////////////////////////////////// FUNCTION myDebugVar(oWnd,ky,xv) // variable output LOCAL cLog, cObj, cMsg, o, a, ob, nI, nJ, a2Dim, aName, aData, nPost := ky LOCAL aTmp, cTmp, xTmp, lTmp cObj := UPPER(xv) IF cObj == "BUTTON_1" cLog := GetStartUpFolder() + "\_msg.App-Cargo.log" DELETEFILE(cLog) _SetGetLogFile( cLog ) // new log file output name cMsg := " App.Cargo:" ? ProcNL(), "oWnd:Name =", oWnd:Name, oWnd,ky,xv ? " Объект App.Cargo доступен всегда в любом месте программы" ? " The App.Cargo object is always available anywhere in the program" o := App.Cargo ELSE cLog := GetStartUpFolder() + "\_msg.oWnd-Cargo.log" DELETEFILE(cLog) _SetGetLogFile( cLog ) // new log file output name cMsg := " oWnd:Cargo:" ? ProcNL(), "oWnd:Name =", oWnd:Name, oWnd,ky,xv ? " Объект окна доступен через переменную oWnd в функции или через App.Cargo:oWindow" ? " В данном случае App.Cargo:oWindow это главное окно этой программы" ? " The window object is available through the oWnd variable in the function or through App.Cargo:oWindow" ? " In this case, App.Cargo:oWindow is the main window of this program" o := oWnd:Cargo // we take data from the button that we put earlier ENDIF ? Repl("-",LINE_FILL) a2Dim := o:GetAll() // get an array with a key /*FOR nI := 1 TO Len(a2Dim) // this is a list of ALL keys and their values ? cMsg, nI, "Key =", a2Dim[nI][1], "Val =" IF VALTYPE(a2Dim[nI][2]) == "A" ?? HB_ValToExp(a2Dim[nI][2]) ELSEIF VALTYPE(a2Dim[nI][2]) == "C" ?? AtRepl( CRLF, a2Dim[nI][2], " | " ) ELSE ?? a2Dim[nI][2] ENDIF NEXT */ FOR EACH a IN a2Dim nI := hb_EnumIndex( a ) ? cMsg, nI, "Key =", a[1], "Val =" IF hb_IsArray(a[2]) IF Len(a[2]) > 0 .and. hb_IsArray(a[2][1]) ?? a[2] , " = {" FOR nJ := 1 TO LEN(a[2]) ?? HB_ValToExp(a[2][nJ]) + IIF( nJ==LEN(a[2]), "", "," ) NEXT ?? "}" ELSE ?? HB_ValToExp(a[2]) ENDIF ELSEIF hb_IsChar(a[2]) ?? AtRepl( CRLF, a[2], " | " ) ELSEIF hb_IsObject(a[2]) ob := a[2] ?? ob ?? ob:ClassName IF ob:ClassName $ "THMGDATA,TKEYDATA,TTHRDATA" // контейнеры ?? ob:GetAll() ; ?v ob:GetAll() ; ? ELSEIF ob:ClassName == "TSBROWSE" ?? ob:cParentWnd, ob:cControlName, ob:cAlias, ob:nLen aName := __objGetMethodList( ob ) //? HB_ValToExp(aName) ELSEIF ob:ClassName $ "TCNLDATA,TGETDATA,TSTBDATA,TTSBDATA" // контролы ?? ob:Name, ob:Type, ob:Index, ob:Handle ELSEIF ob:ClassName $ "TINIDATA" // ini file // см. примеры там вывод секций и их переменных ?? ob:cIni, ob:lIni, ob:lUtf8 ELSEIF ob:ClassName $ "TWNDDATA" // окно формы ?? ob:Name ?? ob:GETLISTTYPE() , HB_ValToExp( ob:GETLISTTYPE() ) ?? ob:CLIENTWIDTH, ob:CLIENTHEIGHT ? space(5) + "VARIABLE:" aName := __objGetMsgList( ob, .T., 2 ) aTmp := {} FOR nJ := 1 TO LEN(aName) ? SPACE(5) + ob:Name + ":" + a[1], Hb_NtoS(nJ), aName[nJ] lTmp := .F. cTmp := aName[nJ] xTmp := "protected" BEGIN SEQUENCE WITH {|e| break( e ) } xTmp := __objSendMsg( ob, cTmp ) lTmp := .T. END SEQUENCE IF lTmp // доступ есть AAdd(aTmp, {cTmp, xTmp}) ENDIF ?? "=", xTmp NEXT ? ? space(5) + "METHOD:" aName := __objGetMsgList( ob, .F. ) FOR nJ := 1 TO LEN(aName) ? SPACE(5) + ob:Name + ":" + a[1], Hb_NtoS(nJ), aName[nJ] NEXT //? //? space(5) + "!!! aVariable =", hb_valtoexp(aTmp) ? ? space(5) + "*** aVariable : {" FOR nI := 1 TO LEN(aTmp) ? " >", nI, aTmp[nI][1]+" =", HB_ValToExp(aTmp[nI][2]) NEXT ? " }" ? ELSE // TWNDDATA 'O' - окно формы // здесь только ф-ями про объекты из "Harbour для начинающих" на сайте А.Кресина aName := __objGetMethodList( ob ) //aData := __objGetValueList( ob, [aExcept] ) //aData := __objGetValueList( ob ) ? HB_ValToExp(aName) ? HB_ValToExp(aData) ? ob:CLIENTWIDTH, ob:CLIENTHEIGHT ? ob:GETLISTTYPE() ; ?v ob:GETLISTTYPE() ENDIF ELSE ?? a[2] ENDIF NEXT ? "..." cMsg := HB_MemoRead(cLog) AlertInfo(cMsg, "log file - " + cLog ) _SetGetLogFile( App.Cargo:cLog ) // вернём главное имя вывода лог-файла RETURN NIL
| убери AlertInfo и может модифицируй под ситуацию
|
|
|
|
| постоянный участник
|
Пост N: 7400
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.06.23 16:47. Заголовок: Сделал так: o ..
Сделал так: o := This.Object myDebugVar(o,"ky","xv") Лог положил к тебе...
|
|
|
|
| постоянный участник
|
Пост N: 4286
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.06.23 17:00. Заголовок: Andrey пишет Сделал ..
Andrey пишет цитата: | Сделал так: o := This.Object myDebugVar(o,"ky","xv") |
| Добавь o := This.Object This.Cargo := o myDebugVar(o,"ky","xv") т.к. This.Cargo у тебя не определен (Cargo окна) и валится на o := oWnd:Cargo // we take data from the button that we put earlier ? Repl("-",90) a2Dim := o:GetAll() // get an array with a key
|
|
|
|
| постоянный участник
|
Пост N: 4287
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.06.23 17:21. Заголовок: Andrey Был не прав,..
Andrey Был не прав, поторопился, надо не This.Cargo := o, а This.Cargo := oHmgData() This.Cargo:oMain := o
|
|
|
|
| постоянный участник
|
Пост N: 7414
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.06.23 13:02. Заголовок: Developed in : Harbo..
Developed in : Harbour MiniGUI Extended Edition 23.04.3 (32-bit) ANSI xBase Compiler: Harbour 3.2.0dev (r2305191429) C Compiler: LLVM/Clang C 3.3.1 (36350.30c6854.779bede) (32-bit) Григорий, а почему такое странное наименование компилятора ? А где название Embarcadero C++ 7.30 ? Пока только победил сборку своего проекта.... Иконки все на месте, прога запускается сразу без сбоев. На на версии 23.04 (Update 2) с родным BCC 5.8 Compiler: Borland C++ 5.8.2 (32-bit) Харбор - Version: 3.2.0dev (r2305191429) - родной Вылет идёт сразу при старте программы !!! И ещё вот это непонятно при сборке: C:\BCC102\Include\windows\sdk\imm.h:217:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ C:\BCC102\Include\windows\sdk\imm.h:225:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Desktop Family ^ C:\BCC102\Include\windows\sdk\imm.h:434:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ In file included from Source\overlay.cpp:8: C:\BCC102\Include\windows\sdk\windows.h:310:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ 1734 warnings generated. Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
|
|
|
|
| moderator
|
Пост N: 2154
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.06.23 14:47. Заголовок: Andrey пишет: почем..
Andrey пишет: цитата: | почему такое странное наименование компилятора ? А где название Embarcadero C++ 7.30 ? |
| используй вместо функции hb_compiler() новую функцию hb_ Ccompiler()
|
|
|
|
| |
Пост N: 7767
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.23 16:34. Заголовок: Andrey MINGW не про..
Andrey MINGW не пробовал ?
|
|
|
|
|
| постоянный участник
|
Пост N: 7415
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.06.23 18:12. Заголовок: Dima пишет: MINGW н..
|
|
|
|
| |
Пост N: 7768
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.23 18:33. Заголовок: Да , я забыл что у т..
Да , я забыл что у тебя Hasp...
|
|
|
|
| постоянный участник
|
Пост N: 7416
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.06.23 18:43. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | используй вместо функции hb_compiler() новую функцию hb_Ccompiler() |
| А как предусмотреть использование этих разных функций для разных компиляторов BCC ? IF version_BCC < ???? cVerBcc := hb_compiler() ELSE cVerBcc := hb_Ccompiler() ENDIF
|
|
|
|
| moderator
|
Пост N: 2156
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.06.23 18:52. Заголовок: Andrey пишет: как п..
Andrey пишет: цитата: | как предусмотреть использование этих разных функций для разных компиляторов BCC ? |
| Это - псевдо-функция, и она уже учитывает эту разницу
|
|
|
|
| |
Пост N: 7769
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.23 18:54. Заголовок: New: Added the usefu..
New: Added the useful pseudo-function hb_Ccompiler() for more accurate detection of the Borland/Embarcadero C++ compiler version. Перевод Добавлена полезная псевдофункция hb_Ccompiler() для более точного определение версии компилятора Borland/Embarcadero C++.
|
|
|
|
| |
Пост N: 7770
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.23 18:54. Заголовок: gfilatov2002 Оперед..
gfilatov2002 Опередил ))
|
|
|
|
| постоянный участник
|
Пост N: 7417
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.06.23 10:41. Заголовок: Непонятки при сборке..
Непонятки при сборке вместе с готовой своей my.lib Собрал my.lib новым компилятором, добавил в проект где использую. Не собирается зараза, выдаёт вот такое... ..... OBJ\use_LetoDb.c: OBJ\use_Postgres.c: OBJ\InetState.c: In file included from InetState.prg:162: C:\BCC102\Include\windows\sdk\windows.h:42:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Application Family or OneCore Family ^ In file included from InetState.prg:162: In file included from C:\BCC102\Include\windows\sdk\windows.h:199: In file included from C:\BCC102\Include\windows\sdk\windef.h:25: In file included from C:\BCC102\Include\windows\sdk\minwindef.h:15: In file included from C:\BCC102\Include\windows\sdk\specstrings.h:62: C:\BCC102\Include\windows\sdk\sal.h:718:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Input Buffer SAL 1 compatibility macros ^ C:\BCC102\Include\windows\sdk\sal.h:1482:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion Input Buffer SAL 1 compatibility macros ^ In file included from InetState.prg:162: In file included from C:\BCC102\Include\windows\sdk\windows.h:199: In file included from C:\BCC102\Include\windows\sdk\windef.h:25: C:\BCC102\Include\windows\sdk\minwindef.h:19:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma region Application Family or OneCore Family ^ In file included from InetState.prg:162: ... куча всего такого же и в конце вот это: In file included from InetState.prg:162: C:\BCC102\Include\windows\sdk\windows.h:310:9: warning: unknown pragma ignored [-Wunknown-pragmas] #pragma endregion ^ 1761 warnings generated. OBJ\IniGetSetConfig.c: OBJ\table_f8dogExpSite.c: OBJ\_hbmkaut_1main.c: Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc. Fatal: Unable to open file '???E.OBJ' кракозябы hbmk2[2transfer_db]: Error: Running linker. 2 Модуль - InetState.prg:162: исправленный \SAMPLES\Advanced\INET_CHECKER\InetState.prg #pragma BEGINDUMP #include <windows.h> // строка 162 #include "hbapi.h" /***************************************************************************************** * MACRO DEFINITION FOR CALL DLL FUNCTION ******************************************************************************************/ Как быть ?
|
|
|
|
| постоянный участник
|
Пост N: 4305
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.23 11:02. Заголовок: Andrey пишет Собрал ..
Andrey пишет цитата: | Собрал my.lib новым компилятором, добавил в проект где использую. |
| Если бы наоборот, то может быть и зашло. Я использовал lib собранную Bcc5.5 на hb 2.0 (лень переносить проект и отладку делать) в MiniGui с Bcc5.5 и с Bcc5.8 (hb из версии) - все ok!, правда использовал из lib только C ф-ии HB_FUNC (...) PS Lib из Bcc в сборках с msvc не использовал. Согласовывать тексты C из Bcc для msvc, для меня не подъемно, делал товарищ
|
|
|
|
| постоянный участник
|
Пост N: 4306
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.23 11:44. Заголовок: PS2 Попробуй в старо..
PS2 Попробуй в старом проекте выделить работу с каким то справочником (все собрано в одном prg, например) и получить hrb файл. В новом проекте подключить и запустить его работу. Hrb получать не ф-ей, а через hbmk2. Все внешние ф-ии подключи по REQUEST, какие то переведи в STATIC FUNCTION, даже если они будут дублироваться с др. STATIC FUNCTION в др. PRG
|
|
|
|
| постоянный участник
|
Пост N: 7418
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 11:05. Заголовок: Bcc5.5 и Bcc 5.8 и 7..
Bcc5.5 и Bcc 5.8 и 7.30 сильно отличаются. OBJ собранные на 5.5/8 не собираются в 7.30 Да и между собой 5.5 и 5.8 не особо дружат... Я всегда удаляю OBJ и собираю проект с чистого листа. Методом тыка определил, что русские буквы в названии папок и файлов НЕ ДОПУСКАЮТСЯ если в проект добавляешь свою библиотеку! Если полностью исходники, то собирается и с русскими буквами. Убрал русские буквы и мой проект собрался нормально.
|
|
|
|
| постоянный участник
|
Пост N: 7427
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.23 14:38. Заголовок: А как в коде програм..
А как в коде программы сделать проверку версий BCC ? Чтобы можно код под разными BCC собирать.
|
|
|
|
| moderator
|
Пост N: 2157
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.06.23 17:34. Заголовок: Andrey пишет: как в..
Andrey пишет: цитата: | как в коде программы сделать проверку версий BCC ? |
| Например, как в программе ниже использовать функцию BorlandVersion() Скрытый текст
#include "hmg.ch" Function Main MsgDebug(BorlandVersion()) Return Nil function BorlandVersion() local cHexVer := hb_NumToHex( BorlandC() ) return SubStr( cHexVer, 1, 1 ) + "." + SubStr( cHexVer, 2 ) #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( BORLANDC ) { #ifdef __BORLANDC__ hb_retnl( __BORLANDC__ ); #else hb_retnl( 0 ); #endif } #pragma ENDDUMP
|
|
|
|
|
| постоянный участник
|
Пост N: 7428
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.23 17:56. Заголовок: Не совсем то... Но э..
Не совсем то... Но это тоже нужно ! Спасибо !!! Вот в коде нужно компилировать строки в зависимости от компилятора: #define FR_PRIVATE 0x10 #define FR_NOT_ENUM 0x20 #include "minigui.ch" #include "hbdyn.ch" .... *-----------------------------------------------------------------------------* // для ВСС 5.5 Function AddFont(cFontFile) Return AddFontResourceEx( cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0 ) Function RemoveFont(cFontFile) Return RemoveFontResourceEx( cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0 ) DECLARE DLL_TYPE_INT AddFontResourceEx ( DLL_TYPE_LPCTSTR lpszFilename, DLL_TYPE_DWORD flag, DLL_TYPE_LPVOID pdv ) IN GDI32.DLL DECLARE DLL_TYPE_BOOL RemoveFontResourceEx ( DLL_TYPE_LPCTSTR lpFileName, DLL_TYPE_DWORD flag, DLL_TYPE_LPVOID pdv ) IN GDI32.DLL *-----------------------------------------------------------------------------* // ВСС 7.30 не поддерживает дополнительную библиотеку dll.lib //Поэтому этот код должен быть переписан с использованием библиотеки calldll Function AddFont(cFontFile) Return HMG_CallDLL ("GDI32.DLL", HB_DYN_CTYPE_INT, "AddFontResourceEx", cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0) Function RemoveFont(cFontFile) Return HMG_CallDLL ("GDI32.DLL", HB_DYN_CTYPE_BOOL, "RemoveFontResourceEx", cFontFile, FR_PRIVATE+FR_NOT_ENUM, 0)
|
|
|
|
| постоянный участник
|
Пост N: 7429
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.23 20:20. Заголовок: По тестировал новый ..
По тестировал новый компилятор BCC 7.30 с MiniGUI Extended Edition 23.01.0 (32-bit) ANSI Всё в программе работает штатно, даже избавился от повисания программы (ошибка пропадания окна/то есть, то нет) ! Что понравилось: 1) Собирает ресурсы правильно (мои 20Мб картинок и иконок показывает в программе правильно) 2) Собранный ехе-ник работает шутрее чем на BCC 5.8 (индексация, создание объектов) 3) Быстрей собирается ехе-ник после правки одного-двух модулей, буквально собирается за несколько секунд. у меня ехе-ник весит 26 мб Какие недостатки - кракозябы в ошибках, вот экран: Это можно как то исправить ? Григорий, а пускай ошибки на английском ВСЕГДА пишутся. Это Будет лучше кракозябов ! Всё, остаюсь на новом BCC 7.30 ! Спасибо БОЛЬШОЕ Григорий !
|
|
|
|
| moderator
|
Пост N: 2158
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.23 20:39. Заголовок: Andrey пишет: ошибк..
Andrey пишет: цитата: | ошибки на английском ВСЕГДА пишутся |
| Да, это возможно сделать. Andrey пишет: Был рад помочь!
|
|
|
|
| |
Пост N: 142
Зарегистрирован: 12.06.06
|
|
Отправлено: 19.06.23 07:53. Заголовок: Andrey пишет: Всё, ..
Andrey пишет: цитата: | Всё, остаюсь на новом BCC 7.30 ! |
| Где его можно взять ?
|
|
|
|
| постоянный участник
|
Пост N: 7430
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.06.23 11:09. Заголовок: i3t4j6 пишет: Где е..
i3t4j6 пишет: У Григория !
|
|
|
|
| постоянный участник
|
Пост N: 7431
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.06.23 17:47. Заголовок: Григорий, а как напи..
Григорий, а как написать правильно в ресурсном файле для BCC 7.30 ? А то когда по ехе-нику свойство смотришь или в Менеджере задач, там кракозябы видны и нет по русскому имени программы. До этого стояло у меня так: ... VALUE "ProductName", "Моя программа\000" VALUE "ProductVersion", "5.хх\000" VALUE "Comments", "Создано Мною <xxxx@gmail.com>\000" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0419 0x04E3 }
|
|
|
|
| moderator
|
Пост N: 2159
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.06.23 18:57. Заголовок: Andrey пишет: нет п..
Andrey пишет: цитата: | нет по русскому имени программы |
| Для получения русских букв в имени программы надо заменить два файла в папке \BCC102\bin\ на аналогичные файлы из поставки ВСС 5.5: - brcc32.exe - rw32core.dll Проверено - работает
|
|
|
|
| постоянный участник
|
Пост N: 7432
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.06.23 12:24. Заголовок: Спасибо ! :sm36:..
Спасибо !
|
|
|
|
| постоянный участник
|
Пост N: 7435
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.23 00:59. Заголовок: Что-то сбоит в новой..
Что-то сбоит в новой версии BCC 7.30 с MiniGUI Extended Edition 23.01.0 Вызываю окно MODAL (1), далее MODAL (2), далее MODAL (3). Делаю закрытие MODAL (3) и попадаю сразу в MODAL (1) .... Соответственно закрываю MODAL (1) и получаю ошибку - нет такой переменной на окне MODAL (2) Конечно НЕТ - нарушена очередность возвращения окон. Как это лечиться ? В 5.8 этого не было !!!
|
|
|
|
| постоянный участник
|
Пост N: 7436
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.23 10:42. Заголовок: Блин, вообще беда с ..
Блин, вообще беда с окнами MODAL - теряются окна, нет правильного возврата из окон. Во всей проге такая же фигня...
|
|
|
|
| постоянный участник
|
Пост N: 7482
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.23 16:02. Заголовок: Создаю новую пробную..
Создаю новую пробную сборку для своей проги. Для тестирования и возврата работоспособности своей проги. BCC 5.8 использовать не могу, иконки в проге другие становятся. Как для Минигуи 22.12 (Update 2) добавить в исходники команду от MiniGUI 23.04.4 SET WINDOW MODAL PARENT HANDLE ON ? Ну и что там есть нужное и хорошее в 23.04.4 ? Харбор последний с февраля тоже не могу взять к себе в проект - ехе-ник просто не запускается... Пробовал поставить BCC 5.5 в MiniGUI-23.04.4 - не собирается, выдаёт ошибку компиляции: Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland Error: Unresolved external 'SwitchToThisWindow' referenced from C:\MINIGUI-23.04.4\LIB\MINIGUI.LIB|c_windowsAPI hbmk2[Ab4winDebug]: Error: Running linker. 2 Это можно как то победить ?
|
|
|
|
| постоянный участник
|
Пост N: 4356
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.07.23 16:45. Заголовок: Andrey пишет Добавь..
Andrey пишет цитата: | Как для Минигуи 22.12 (Update 2) добавить в исходники команду от MiniGUI 23.04.4 SET WINDOW MODAL PARENT HANDLE ON |
| Добавь в h_windows.prg ... FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ; ... _HMG_InplaceParentHandle := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() ) IF _HMG_InplaceParentHandle <> 0 Parent := _hmg_InplaceParentHandle ...
|
|
|
|
| постоянный участник
|
Пост N: 7483
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.23 17:13. Заголовок: Не собирается. Ошибк..
Не собирается. Ошибка на команде: SET WINDOW MODAL PARENT HANDLE ON Source\main.prg(293) Error E0030 Syntax error "syntax error at 'WINDOW'" 1 error No code generated. hbmk2[Ab4winDebug]: Error: Running Harbour compiler (built-in). 1
|
|
|
|
| постоянный участник
|
Пост N: 4357
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.07.23 17:18. Заголовок: Andrey SET WINDOW M..
Andrey SET WINDOW MODAL PARENT HANDLE ON ставить не надо - это команда препроцессора, изменение в h_windows.prg предполагает, что команда стоит всегда
|
|
|
|
| постоянный участник
|
Пост N: 7484
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.23 17:24. Заголовок: Понял, спасибо ! :s..
Понял, спасибо ! Всё равно не собирается, нехватка кучи функций... Добавил h_windows.prg к себе в проект - собралось. Ошибки такие же идут... Вешается прога и всё тут... Раньше вешалась на MODAL(3) - возврат на MODAL(2), теперь чуть больше MODAL(4) - возврат на MODAL(3) Т.е. при возврате с окна MODAL(4) на предыдущее окно, это окно есть на экране (благодаря функции To_Focus() ), а кнопки НЕДОСТУПНЫ ! Нажимает Esc - окно закрывается, второй вход в это же окно и о НЕ МОЖЕТ быть при возврате окно не вешается... При первом входе на 4,5 MODAL это происходит всегда !!! Как быть ? Юзера стонут... Раньше, в начале года такого не было...
|
|
|
|
| постоянный участник
|
Пост N: 7485
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.23 04:46. Заголовок: Разобрался я как бор..
Разобрался я как бороться с зависанием. Но это так себе решение наверное. Везде в программе на окнах MODAL(2) (3) и т.д. нужно делать такой финт ! DEFINE WINDOW ... ; ON INIT {|| myOnInitFSeek(...),; This.Get_Zero.Setfocus, _PushKey(VK_0), This.Buff.Setfocus } ; @ 0, 0 LABEL Buff VALUE "" ... INVISIBLE @ 10, 10 GETBOX Get_Zero VALUE "+" ... INVISIBLE @ nRow, nCol BUTTONEX Button_S1 .... ACTION {|nBtn| nBtn := 1, This.Enabled := .F., DoEvents(), _wPost(11, This.Index, {nBtn, This.Name}) } (This.Object):Event(11,{|obtn,ky,abtn| // объект,event,параметр получаем Local ow, cw, cn, lbtn, lwnd, aRet, nRet, cRet, aForm, hWnd Local nButton := abtn[1] // nButton Local cButton := aBtn[2] // This.Name lbtn := obtn:IsControl // переменная контрол\окно .T.\.F. lwnd := obtn:IsWindow // переменная окно\контрол .T.\.F. ow := obtn:Window // если lbtn == .T. окно берем так cw := ow:Name // аналог ThisWindow.Name cn := obtn:Name // аналог This.Name ? " === Start = :Event(11)", ProcNL() ? " === ", abtn, "abtn=", nButton, cButton, "Event - ky=", ky ? " === ", obtn:ClassName, lbtn, lwnd, cw, cn ? " === @", cw, _IsWindowActive(cw), _IsWindowDefined(cw), cn, _IsControlDefined(cn, cw) Darken2Open(ow:Handle) // затенение на окно This.Get_Zero.Setfocus ; _PushKey(VK_1) aRet := ButtonSpavki(aDim,nButton,cw) // вызов другого MODAL(3) IF ! To_Focus(cw, cn) AlertStop("Window not found ! " + cw, "ERROR") ENDIF Darken2Close(ow:Handle) // убрать затенение с окна This.Get_Zero.Setfocus ; _PushKey(VK_2) DO EVENTS .... IF _IsWindowDefined(cw) SET WINDOW THIS TO cw SetProperty( cw, cn, "Caption", cRet ) ? " === ThisWindow =", cw, ThisWindow.Name ? " === This =", cn, This.Name This.&(cn).Enabled := .T. // разблокировка кнопки This.Label_Buff.SetFocus() SET WINDOW THIS TO ELSE ? "==== *** ERROR *** WINDOW ["+cw+"] not found ! " ENDIF ? " === End = :Event(11)" ; ? " ..." Return Nil } ) (This.Object):Event(99, {|ow| _logfile(.t., ":Event(99)" + ProcNL(), ow:Name, _IsWindowDefined(ow:Name) ) ,; ow:Release() } ) END WINDOW И почему так с MODAL окнами происходит ? Причем последнее MODAL окно чаще всего с ТСБ ! Можно как то глобально вылечить ?
|
|
|
|
| постоянный участник
|
Пост N: 4358
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.07.23 08:13. Заголовок: Andrey пишет Можно к..
Andrey пишет цитата: | Можно как то глобально вылечить ? |
| Убери окно Darken2Open(...), Darken2Close(...)
|
|
|
|
| постоянный участник
|
Пост N: 7486
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.23 09:33. Заголовок: Убрал. Некоторые глю..
Убрал. Некоторые глюки пропали, но другие не лечатся !
|
|
|
|
| moderator
|
Пост N: 2175
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.07.23 10:38. Заголовок: Andrey пишет: Пробо..
Andrey пишет: цитата: | Пробовал поставить BCC 5.5 в MiniGUI-23.04.4 - не собирается, выдаёт ошибку компиляции: Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland Error: Unresolved external 'SwitchToThisWindow' referenced from C:\MINIGUI-23.04.4\LIB\MINIGUI.LIB|c_windowsAPI hbmk2[Ab4winDebug]: Error: Running linker. 2 Это можно как то победить ? |
| Благодарю за сообщение! Это будет исправлено в следующей сборке библиотеки
|
|
|
|
| постоянный участник
|
Пост N: 7487
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.23 16:17. Заголовок: Спасибо ! Буду ждать..
Спасибо ! Буду ждать ! Есть ли какой отладчик посмотреть почему фокус на окне, а ввода на окне нет ? Т.е. висит окно, кнопки не работают, GETBOX не работает, горячие клавиши не работают F1, F2 Только ESC позволяет выйти из окна.
|
|
|
|
| постоянный участник
|
Пост N: 7518
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.08.23 15:51. Заголовок: После перехода на BC..
После перехода на BCC 5.8 появились предупреждения. Помогите убрать их. Вот такое есть: OBJ\util_MiniGui.c: Warning W8017 C:\MiniGUI-23.07\include\mgdefs.h 102: Redefinition of 'HB_STORC' is not identical + Full parser context + Source\\util_MiniGui.prg, line 1117: #include C:\MiniGUI-23.07\include\mgdefs.h мой код ------- #pragma BEGINDUMP #include <mgdefs.h> // строка 1117 #include <commctrl.h> #include "hbdate.h" HB_FUNC( DTP_SETDT ) { HWND hwnd; SYSTEMTIME sysTime; hwnd = ( HWND ) HB_PARNL( 1 ); if( HB_ISDATETIME( 2 ) ) { int iYear, iMonth, iDay, iHour, iMinute, iSecond, iMSec; hb_timeStampUnpack( hb_partd( 2 ), &iYear, &iMonth, &iDay, &iHour, &iMinute, &iSecond, &iMSec ); sysTime.wYear = ( WORD ) iYear; sysTime.wMonth = ( WORD ) iMonth; sysTime.wDay = ( WORD ) iDay; sysTime.wDayOfWeek = 0; sysTime.wHour = ( WORD ) iHour; sysTime.wMinute = ( WORD ) iMinute; sysTime.wSecond = ( WORD ) iSecond; sysTime.wMilliseconds = ( WORD ) iMSec; } else if( HB_ISDATE( 2 ) ) { //TODO } else { sysTime.wYear = ( WORD ) hb_parnidef( 2, 2005 ); sysTime.wMonth = ( WORD ) hb_parnidef( 3, 1 ); sysTime.wDay = ( WORD ) hb_parnidef( 4, 1 ); sysTime.wDayOfWeek = 0; if( hb_pcount() >= 7 ) { sysTime.wHour = ( WORD ) hb_parni( 5 ); sysTime.wMinute = ( WORD ) hb_parni( 6 ); sysTime.wSecond = ( WORD ) hb_parni( 7 ); sysTime.wMilliseconds = ( WORD ) hb_parni( 8 ); } else { sysTime.wHour = 0; sysTime.wMinute = 0; sysTime.wSecond = 0; sysTime.wMilliseconds = 0; } } SendMessage( hwnd, DTM_SETSYSTEMTIME, GDT_VALID, ( LPARAM ) &sysTime ); } Или вот ещё такое: OBJ\menu_Achoice.c: Warning W8084 Source\\menu_Achoice.prg 361: Suggest parentheses to clarify precedence in function B_FUN_LISTVIEWAPPROXIMATEVIEWRECT ---- Вот код: #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include <commctrl.h> #define HB_STORNI( n, x, y ) hb_storvni( n, x, y ) // BAA HB_FUNC( LISTVIEWAPPROXIMATEVIEWRECT ) { int iCount = hb_parni(2); DWORD Rc; Rc = ListView_ApproximateViewRect( ( HWND ) hb_parnl(1), -1, -1, iCount); // строка 361 hb_reta( 2 ); HB_STORNI( LOWORD(Rc), -1, 1 ); HB_STORNI( HIWORD(Rc), -1, 2 ); } #pragma ENDDUMP Вот ещё такое: OBJ\util_c_code.c: Warning W8084 Source\\util_c_code.prg 109: Suggest parentheses to clarify precedence in function hb_Ping2 Вот код: #pragma BEGINDUMP #include <hbapi.h> #include <winsock2.h> #include <iphlpapi.h> #include <icmpapi.h> int hb_Ping2( const char * cp ) { HANDLE hIcmpFile; unsigned long ipaddr = INADDR_NONE; // corrected by KDJ DWORD dwRetVal; char SendData[32] = "Data Buffer"; LPVOID ReplyBuffer; DWORD ReplySize; if( isalpha( cp[0] ) ) //host address is a name { WSADATA wsaData; int iResult; iResult = WSAStartup( MAKEWORD(2, 2), &wsaData ); // строка 109 if( iResult == 0 ) { struct hostent *remoteHost = gethostbyname( cp ); if( remoteHost != NULL ) ipaddr = *(unsigned long *) remoteHost->h_addr_list[0]; WSACleanup(); } } else ipaddr = inet_addr( cp ); if (ipaddr == INADDR_NONE) return 1; hIcmpFile = IcmpCreateFile(); if (hIcmpFile == INVALID_HANDLE_VALUE) return 2; ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData); ReplyBuffer = (VOID*) malloc(ReplySize); if (ReplyBuffer == NULL) { IcmpCloseHandle(hIcmpFile); return 3; } dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData), NULL, ReplyBuffer, ReplySize, 1000); free(ReplyBuffer); IcmpCloseHandle(hIcmpFile); if (dwRetVal == 0) return 4; /*GetLastError();*/ return 0; }
|
|
|
|
| постоянный участник
|
Пост N: 7610
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.11.23 22:53. Заголовок: Что-то фигня с русск..
Что-то фигня с русскими месяцами у меня. aMonth := Array(12) FOR nI := 1 TO 12 aMonth[nI] := " " + LOWER( NTOCMONTH( nI ) ) + " " NEXT MsgDebug(hb_Ccompiler(), aMonth, SET(_SET_LANGUAGE), hb_CdpSelect() ) Выходит вот так: Почему ?
|
|
|
|
| постоянный участник
|
Пост N: 4451
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.11.23 23:54. Заголовок: Andrey пишет Что-то ..
Andrey пишет цитата: | Что-то фигня с русскими месяцами у меня. |
| Рискну предположить, что в Region настройках у тебя ru1251, а в одно байтовой программе ставится UA1251 Для разных языков надо unicode версию hmg использовать, так для LV, DE, RU, EN, FR, ... языков надо, для UA, думаю тоже
|
|
|
|
| постоянный участник
|
Пост N: 7611
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.11.23 14:52. Заголовок: SergKis пишет: Риск..
SergKis пишет: цитата: | Рискну предположить, что в Region настройках у тебя ru1251, а в одно байтовой программе ставится UA1251 |
| Там в начале программы указываю SET LANGUAGE TO RUSSIAN SET CODEPAGE TO RUSSIAN В модуле TsbViewer.prg делаю cSetCP := hb_SetCodepage() cSelCdp := hb_CdpSelect() cLngSel := Hb_LangSelect() ... DEFINE WINDOW &cForm AT nY,nX WIDTH nW HEIGHT nH TITLE cTitle ; ICON cIcon WINDOWTYPE STANDARD TOPMOST NOMAXIMIZE NOSIZE ; ON GOTFOCUS {|| App.Cargo:cFormGotFocus := This.Name, ; myLangRecover(cAlias,cSetCP,cSelCdp,cLngSel) } ; // возврат фокуса на форму .... FUNCTION myLangRecover(cAlias,cSetCP,cSelCdp,cLngSel) DO EVENTS hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) hb_LangSelect(cLngSel) IF LEN(cAlias) > 0 IF ( Select( cAlias ) > 0 ) dbSelectArea( cAlias ) ENDIF ENDIF DO EVENTS RETURN NIL Может это и не надо делать, но если языки в таблицах разные, то при возврате фокуса на таблицу - восстанавливаю язык какой был. Этот алгоритм взят с SAMPLES\Advanced\Tsb_5Win
|
|
|
|
| постоянный участник
|
Пост N: 4452
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.11.23 22:59. Заголовок: Andrey пишет При пер..
Andrey пишет цитата: | При первом входе в эту функцию месяца правильные, потом фигню выдают |
| Для работы с месяцами нужны разные названия их, со склонением, без, сокращенное название, + upper и все это для разных языков. Например, такой вариант можно делать, названия месяцев (и не только) держать в ресурсах программы в виде ini с секциями по нужным языкам и доставать варианты названия по необходимости из них. Пример тут (кому интересно) https://TransFiles.ru/hftxe Когда то делал пример отображения базы U04.DBF, которая в кодировке LV866 в тсб с перекодировкой на фонты с использованием CHARSET. В начало добавил примеры с яз. текстами в ini, сами ini в RES каталоге. Внимание ! Файл demo_ru866.prg набран в кодировке RU866 для FAR edit. Др. файлы в кодировке RU1251 цитата: | Что ещё надо для правильного переключения языка ? |
| Думаю, надо правильно ставить hb_CdpSelect(...) и исп. окна с контролами и фонтами, соответсвующими этой установке CDP
|
|
|
|
| постоянный участник
|
Пост N: 7614
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.23 15:57. Заголовок: Разобрался в данном ..
Разобрался в данном случае, нужно просто использовать ТОЛЬКО одну функцию: //hb_LangSelect(cLngSel) //hb_SetCodepage(cSetCP) hb_CdpSelect(cSelCdp) Тогда месяца выводятся правильно ! А как быть если база открыта в кодировке RU866, а само приложение в RU1251 ? При переключении на другое окно с базой UA866 и окном с другой кодировкой UA1251 - что будет ? Как в таком случае правильно менять языки вывода ?
|
|
|
|
| постоянный участник
|
Пост N: 4453
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.23 17:02. Заголовок: Andrey пишет А как б..
Andrey пишет цитата: | А как быть если база открыта в кодировке RU866, а само приложение в RU1251 ? При переключении на другое окно с базой UA866 и окном с другой кодировкой UA1251 - что будет ? |
| Это hb, с перекодировкой будет все ok! ты же уже использовал 1-ый пункт. Вопрос с GUI фонтами, т.к. они обеспечивают язык окон, контролов. Для одно байтовых программ надо исп. CHARSET указание языка, для команды SET FONT TO <fontname> , <fontsize> CHARSET берется из Region, для команд DEFINE FONT <name> ... без CHARSET то же. С указанным CHARSET в контролы окна надо подавать данные из hb соответствующей CDP. В программах unicode этого делать не надо. У меня все программы unicode и работа с языками сводится к замене данных из языкового ini. В примере выше я подгружал из ресурсов языковые ini в разные переменные, т.е. App.Cargo:oTextUtf := oGetIniText( "RU_text", , .T. ) App.Cargo:oTextEN := oGetIniText( "EN_text" ) cRes := Left( hb_CdpSelect(), 2 ) + cRes App.Cargo:oTextIni := oGetIniText( cRes ) В unicode программе, в зависимости от выбранного языка, работа ведется с одной переменной, т.е. cRes := "EN_text" ; App.Cargo:oText := oGetIniText( cRes ) cRes := "RU_text" ; App.Cargo:oText := oGetIniText( cRes ) cRes := "LV_text" ; App.Cargo:oText := oGetIniText( cRes ) ... App.Cargo:oText содержит данные в Utf8 PS Для UA1251, возможно, надо поставить hb_CdpSelect(...), сделать фонты, потом поставить RU1251 и так же сделать фонты. Потом на языковых окнах исп. соответствующие фонты. Для hb данных при переключении на яз. окно ставить свой hb_CdpSelect(...) ..., но это надо пробовать.
|
|
|
|
| постоянный участник
|
Пост 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
[только новые]
|
|