Автор | Сообщение |
|
| |
Пост 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: 63
Зарегистрирован: 21.04.13
|
|
Отправлено: 11.10.13 00:35. Заголовок: Образцы .hbp - где-то есть на форуме
примеры, нужно затачивать под себя =================test_bcc.hbp=== # -platform=win -compiler=bcc #-inc -info -trace #further link options -W3 -es2 #-mt # compile options #-m #-n #-es0 -w0 #-b # libs -liphlpapi -lxhb -lhbxpp -lhbmzip -lvfw32 -lhbwin -lhbct -lhbrtl -lhbvm -lhbnf #-llibpng -lhbtip -lhbmisc -std -gtwvt -prgflag=-D_HBMK_ -DIN_NET -DHARB3 -ldflag=-aa -nohbc #-run #source TEST.PRG ... ===============test_m3.hbp== # -platform=win -compiler=mingw #-inc -info -trace #--hbinfo -quiet -oTEST_m3.EXE -workdir=C:\temp #further link options #-W3 #-es2 #-mt -ldflag=-Wl,--allow-multiple-definition # compile options #-m #-n #-es0 -w0 #-b # libs ....
|
|
|
|
| |
Пост N: 327
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.10.13 16:00. Заголовок: Я вот чего думаю - м..
Я вот чего думаю - может придумать какой-нить "стресс-тест", который позволит по максимуму нагрузить подсистему Harbour/С и выяснить - в чем проблема? Может дело в железе/памяти/системных ошибках на конкретной машине? У кого-нить есть опыт построения подобных вещей? Первая мысль - построить массив на пару миллионов записей (учесть свободную память перед этим, разумеется) и погонять как следует по нему: сложить/вычесть/посчитать контрольные суммы... Может таблицу какую сгородить и прокрутить ее по сети...
|
|
|
|
| Администратор
|
Пост N: 3026
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.10.13 09:57. Заголовок: Сергей, ну вкратце р..
Сергей, ну вкратце расскажите, решена ли проблема со сваливанием программы ? Помогли советы в harbour users list ? Насколько я понял, после внесения правок в реестр (обычный трюк для клиппера) проблема исчезла ? Или это только в тестах ?
|
|
|
|
| |
Пост N: 960
Зарегистрирован: 11.06.10
|
|
Отправлено: 22.10.13 11:20. Заголовок: Pasha пишет: Может ..
Pasha пишет: цитата: | Может дело в железе/памяти/системных ошибках на конкретной машине? |
|
Если проблема в этом, то были б "синие екраны смерти виндовс", плюс к этому создаются дампы памяти, по к-м можно узнать причину. Т.к. вылетала эта прога написанная на clippere, то проблема в коде, как уже было сказано в harbour users list исходников никто не видит и потому все работают в этом случае телепатами. Как я понимаю исходных кодов много, и то что все это завелось под harbour, то это большой плюс harbour-у, а код надо пересмотреть, оптимизировать, лишнее убрать, и т.д...
|
|
|
|
| |
Пост N: 356
Зарегистрирован: 08.07.06
|
|
Отправлено: 22.10.13 21:33. Заголовок: Pasha пишет: Сергей..
Pasha пишет: цитата: | Сергей, ну вкратце расскажите, решена ли проблема со сваливанием программы ? Помогли советы в harbour users list ? Насколько я понял, после внесения правок в реестр (обычный трюк для клиппера) проблема исчезла ? Или это только в тестах ? |
| Спасибо, что не остались равнодушны. Сегодня под вечер три раза сработала вот эта мышеловка: FUNC Main() ... some inits BEGIN SEQUENCE MainMenu() RECOVER OutReportLog("Unexpected break in the sequence catched") END SEQUENCE ExitProgram() RETURN // Main() Теперь вот сижу, ломаю голову, как понять, откуда она вызвана. Получается, что ProcStack() в RECOVER блоке уже ничего не показывает. Посмотрел - в std.ch нет команды переопределения BREAK <x>, например, на функцию Break(x). У меня в некоторых местах есть, к примеру, BREAK 1, BREAK 2 и потом - RECOVER USING nValue. Хочу сделать что-то наподобие #command BREAK <x> => OutReportLog("Break call"+ProcStack(,,TRUE,CRLF)) ; Break(<x>) Но не уверен в синтаксисе... hbmk2 завис на компиляции одного из *.prg файлов после внесения таких изменений в общий для всего проекта *.ch ...
|
|
|
|
| |
Пост N: 357
Зарегистрирован: 08.07.06
|
|
Отправлено: 22.10.13 21:36. Заголовок: AlexMyr пишет: Если..
AlexMyr пишет: цитата: | Если проблема в этом, то были б "синие екраны смерти виндовс", плюс к этому создаются дампы памяти, по к-м можно узнать причину. Т.к. вылетала эта прога написанная на clippere, то проблема в коде, как уже было сказано в harbour users list исходников никто не видит и потому все работают в этом случае телепатами. Как я понимаю исходных кодов много, и то что все это завелось под harbour, то это большой плюс harbour-у, а код надо пересмотреть, оптимизировать, лишнее убрать, и т.д... |
| А чего толку от 2.5 мегабайт исходников? Я их сам 15 лет уже вижу практически каждый день, почти всё наизусть помню - а у меня на рабочем месте ни разу!!! за все время такого вылета не было... Да и на половине рабочих мест предприятия - тоже.
|
|
|
|
| |
Пост N: 961
Зарегистрирован: 11.06.10
|
|
Отправлено: 22.10.13 21:52. Заголовок: Sergy пишет: А чего..
Sergy пишет: цитата: | А чего толку от 2.5 мегабайт исходников? |
|
Ну да, че толку, винда ж глючит, а она у вас лицензионная?
|
|
|
|
| |
Пост N: 358
Зарегистрирован: 08.07.06
|
|
Отправлено: 22.10.13 21:54. Заголовок: AlexMyr пишет: Ну д..
AlexMyr пишет: цитата: | Ну да, че толку, винда ж глючит, а она у вас лицензионная? |
| Честно говоря, не очень понял связи.
|
|
|
|
| |
Пост N: 965
Зарегистрирован: 11.06.10
|
|
Отправлено: 22.10.13 22:15. Заголовок: Sergy пишет: Честно..
Sergy пишет: цитата: | Честно говоря, не очень понял связи. |
|
Вы говорите о вылетах своей проги и не придаете никакого значения исходникам Sergy пишет: цитата: | А чего толку от 2.5 мегабайт исходников? |
|
принимая их за валидный и оптимальный код. За эти дни можно было уже в каждую ф-ю и процедуру вначале и в конце вписать "начало работы такой-то func", "конец работы такой-то func" все вывести в лог файл и каждый день парсить его на предмет аномалий. Я говорю о том, что вы один на один со своей проблемой, давая только куски кода, где все вроде нормально, а в общем контексте имете то, что имете, и об этом говорили в user list.
|
|
|
|
| |
Пост N: 3657
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.10.13 22:19. Заголовок: AlexMyr пишет: и о..
AlexMyr пишет: цитата: | и об этом говорили в user list |
| Ссылку напомни плиз
|
|
|
|
| |
Пост N: 359
Зарегистрирован: 08.07.06
|
|
Отправлено: 22.10.13 22:22. Заголовок: AlexMyr пишет: прин..
AlexMyr пишет: цитата: | принимая их за валидный и оптимальный код. За эти дни можно было уже в каждую ф-ю и процедуру вначале и в конце вписать "начало работы такой-то func", "конец работы такой-то func" все вывести в лог файл и каждый день парсить его на предмет аномалий. Я говорю о том, что вы один на один со своей проблемой, давая только куски кода, где все вроде нормально, а в общем контексте имете то, что имете, и об этом говорили в user list. |
| Честно говоря, не понимаю, с чего Вы так решили. Вовсе не считаю свой код валидным и оптимальным. Ищу ошибку. Сложную. По поводу "вставить в каждую функцию трассировку" - возможно и дойдет до этого, куда деваться? Пока хочу разобраться с этой болячкой путем наименьшего затрагивания исходников. Поскольку в 99.999% нажатий на кнопки клавиатуры все происходит так, как положено. И по-хорошему, можно было-бы забить на 2-3 вылета в день. Раньше вылетало чаще. Ну подумаешь, делов-то... Но я так не могу. Спасибо за поддержку в любом случае.
|
|
|
|
|
| |
Пост N: 966
Зарегистрирован: 11.06.10
|
|
Отправлено: 22.10.13 22:37. Заголовок: Sergy пишет: И по-х..
Sergy пишет: цитата: | И по-хорошему, можно было-бы забить на 2-3 вылета в день. Раньше вылетало чаще. Ну подумаешь, делов-то... |
|
Не хочу Вас обидеть, но у юзеров должны быть крепкие нервы в такой ситуации на протяжении 15 лет.
|
|
|
|
| |
Пост N: 967
Зарегистрирован: 11.06.10
|
|
Отправлено: 22.10.13 22:51. Заголовок: Dima пишет: Ссылку ..
Dima пишет: пересмотрю user list, покажу, но там прямо так не сказано.
|
|
|
|
| |
Пост N: 968
Зарегистрирован: 11.06.10
|
|
Отправлено: 23.10.13 09:29. Заголовок: AlexMyr пишет: Dima..
AlexMyr пишет: цитата: | Dima пишет: цитата: Ссылку напомни плиз пересмотрю user list, покажу, но там прямо так не сказано. |
| Вот продолжение темы https://groups.google.com/forum/#!topic/harbour-users/zTxmANrh2oU
|
|
|
|
| Администратор
|
Пост N: 3028
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.10.13 09:39. Заголовок: Sergy пишет: Сегодн..
Sergy пишет: цитата: | Сегодня под вечер три раза сработала вот эта мышеловка: |
| Скорее всего это не наш загадочный случай, а обычная ошибка, которую поймал обрработчик. Можно немного видоизменить код: recover using oErr и в протокол выдавать параметры oErr, чтобы было понятно, что это за зверь.
|
|
|
|
| |
Пост N: 360
Зарегистрирован: 08.07.06
|
|
Отправлено: 23.10.13 10:54. Заголовок: Pasha пишет: Скорее..
Pasha пишет: цитата: | Скорее всего это не наш загадочный случай, а обычная ошибка, которую поймал обрработчик. Можно немного видоизменить код: recover using oErr и в протокол выдавать параметры oErr, чтобы было понятно, что это за зверь. |
| А если это обычный BREAK, не завернутый в BEGIN SEQUENCE ... RECOVER ... END? Таких команд в тексте много, но все они предназначены для обработки критических ситуаций с таблицами, дисками и тп... Вчера полночи просматривал исходники - вроде все ровно... Пока сделал так: #command BREAK [<x>] => BreakList(<x>) BreakList() выведет стек вызовов включая себя самого и вызовет стандартный Break(x). В случае перехвата в Main() - будет нормальный ExitProgram. Поставил там-же еще Alert() с требованием вызвать админа или программера. В тексте программы сейчас включен отладчик, сырцы на флэшке. Если буду на месте в этот момент - надеюсь поймать. Спасибо.
|
|
|
|
| Администратор
|
Пост N: 3029
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.10.13 14:49. Заголовок: Для анализа ошибок о..
Для анализа ошибок открытия файла в протокол можно выдавать значение hb_osError(). Это код ошибки последней операции, который дает windows.
|
|
|
|
| |
Пост N: 409
Зарегистрирован: 08.07.06
|
|
Отправлено: 14.09.14 20:21. Заголовок: Решил двинуться даль..
Решил двинуться дальше, в сторону подключения мыши к изначально "клавиатурной" программе. Не то, чтобы очень нужно, но задают вопросы "а с планшета можно" ? Говорю - "можно, но неудобно, тк экранная клавиатура терминального клиента занимает пол-экрана". Но какие-то шаги в этом направлении пора делать... Практически все "окна" в программе рисуются "виртуально" при помощи @ a,b,c,d BOX ..., устанавливаются "временные" относительные координаты от начала текущего окна и осуществляется SAY ... GET. Мне нужно сделать так, чтобы при нажатии мышью за пределами определенного прямоугольника в буфер клавиатуры попала команда Esc, соотв. выбранный отчет/операция будут отменены. Подскажите пожалуйста - в каком направлении двигаться для адаптирования программы под мышь? Спасибо.
|
|
|
|
| |
Пост N: 410
Зарегистрирован: 08.07.06
|
|
Отправлено: 14.09.14 21:22. Заголовок: И еще вопрос: переше..
И еще вопрос: перешел на GTWVT. Какие шрифты для работы с ним кто использует? Кроме "стандартных" Courier и Lucida Console разумеется. Очень хочется сделать похожим на вот это: Для себя "нашел" ещё удачными Consolas и Andale Mono. Какие вообще требования к шрифтам, которые можно подключить к GTWVT? Так понимаю, что шрифт должен быть OpenType и Unicode ? Может быть, где-то есть готовый список ?
|
|
|
|
| постоянный участник
|
Пост N: 415
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.14 21:45. Заголовок: Sergy пишет:для адап..
Sergy пишет: цитата: | для адаптирования программы под мышь |
| в каталоге test\mouse.prg, и поищи mouse в test\*.prg для начала.
|
|
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|