Автор | Сообщение |
|
| |
Пост 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: 96
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 22:58. Заголовок: Andrey пишет: Это C..
Andrey пишет: цитата: | Это CT.LIB Я отказался от неё. |
| Понятно, что у виндовой программы и расширенного Harbour всяко функций больше. Но сейчас нужно запустить проект и посмотреть, где что да как. Dima пишет: цитата: | Тяжелый случай. Тяжело и громоздко. Не надо его юзать. CDX самое то или IDX (CDX) под ADS или LetoDB (CDX) |
| Переделывать NTX на CDX или еще дальше - SQL подобные БД вообще думаю пока нет смысла, когда программа "еле дышит"... Запустить, попробовать, добиться хотя-бы такого-же функционала, как и с 5,2е, обкатать, а потом уж оптимзировать. Такие вот мысли пока...
| |
|
|
| |
Пост N: 3361
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.08.13 23:01. Заголовок: Sergy пишет: Запуст..
Sergy пишет: цитата: | Запустить, попробовать, добиться хотя-бы такого-же функционала, как и с 5,2е, обкатать, а потом уж оптимзировать. |
| Все правильно. Так и я думал и все получилось и у тебя все будет нормально с переводом. Просто остынь и осмысли А вопросы сюда ;) Поможем ! ЗЫ Я тоже не верил что смогу перевести довольно большую прогу с Clipper 5.2 на Harbor , но.......5 дней упорной работы и добился такого же функционала 5 метров исходников , 300 файлов , пришлось попотеть конечно. Руки не опускай и все будет норм ! По ходу косяков будет много по началу но со временем все меньше и меньше. Просто поверь.
| |
|
|
| |
Пост N: 97
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 23:01. Заголовок: Dima пишет: Выведи ..
Dima пишет: цитата: | Выведи это дело в ? cDir+cAlias+cExt и глянь что кажет , возможно твой косяк |
| Мой. удалил клипперовские *.NTX, а - *.XNT - остались... Удалил, перестроились ок. Сорри.
| |
|
|
| |
Пост N: 98
Зарегистрирован: 08.07.06
|
|
Отправлено: 11.08.13 23:20. Заголовок: Dima пишет: Все пра..
Dima пишет: цитата: | Все правильно. Так и я думал и все получилось и у тебя все будет нормально с переводом. Просто остынь и осмысли А вопросы сюда ;) Поможем ! |
| А вот за это - отдельное БОЛЬШОЕ Спасибо! цитата: | ЗЫ Я тоже не верил что смогу перевести довольно большую прогу с Clipper 5.2 на Harbor , но.......5 дней упорной работы и добился такого же функционала 5 метров исходников , 300 файлов , пришлось попотеть конечно. Руки не опускай и все будет норм ! По ходу косяков будет много по началу но со временем все меньше и меньше. Просто поверь. |
| У меня чуть скромнее: 34 файла, 2,5 мега исходников. Всегда старался не пользоваться никакими сторонними библиотеками, кроме стандартных Nanforun Toolkit и Clipper Tools - подозревал, что этот день когда-нить настанет... В первом приближении - Работает!!! И ТАК БЫСТРО, что ппц.
| |
|
|
| |
Пост N: 100
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 12:19. Заголовок: Итак, огромное спаси..
Итак, огромное спасибо всем помощникам! Программа запустилась и очень шустро (по сравнению с ntvdm) работает. Возникающие то тут, то там вопросы - решаемы, связаны с вольностями Clipper - все, что дальше десятого символа считается неважным. На повестке дня пока два насущных вопроса, связанных с отказом от нескольких системных функций: 1) В программе есть возможность записи клавиатурных нажатий. Типа макросов. И последующего их воспроизведения одним нажатием для автоматизации рутинных операций. Раньше это было организовано при помощи INKEYTRAP/TRAPANYKEY/KEYSEND. Одна из этих функций актвивизировалась и складывала в фоновом режиме все нажатия юзера в массив/строку. После чего в любой момент из массива/строки при помощи KEYSEND эти коды кнопок передавались в буфер клавиатуры. Просто и удобно. Как можно релизовать похожий механизм в Harbour ? 2) Нужен аналог функции BIOSDATE(), она используется сами понимаете для чего. Отказываться полностью не хочется, а использовать что-либо взамен - придется бегать по всем машинам с флэшкой, переделывать ключевые файлы.
| |
|
|
| |
Пост N: 3362
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.08.13 12:32. Заголовок: Sergy пишет: Нужен ..
Sergy пишет: цитата: | Нужен аналог функции BIOSDATE() |
| Func Biosdate() #include "hbwin.ch" return GetRegistry( WIN_HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System" ,"SystemBiosDate" )
| |
|
|
| |
Пост N: 101
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 12:38. Заголовок: Dima пишет: Func B..
Dima пишет: цитата: | Func Biosdate() #include "hbwin.ch" return GetRegistry( WIN_HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System" ,"SystemBiosDate" ) |
| Спасибо, использую
| |
|
|
| |
Пост N: 3363
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.08.13 12:44. Заголовок: Sergy Можно еще к M..
Sergy Можно еще к MAC адресу сетевой прицепиться.
| |
|
|
| |
Пост N: 102
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 13:04. Заголовок: Dima пишет: Можно е..
Dima пишет: цитата: | Можно еще к MAC адресу сетевой прицепиться. |
| Безусловно, только сейчас первая задача - сохранить и перенести функционал. И только потом развиваться дальше. Вот с клавиатурными нажатиями - с какой стороны подступить ?
| |
|
|
| |
Пост N: 3364
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.08.13 13:27. Заголовок: Sergy пишет: Вот с ..
Sergy пишет: цитата: | Вот с клавиатурными нажатиями - с какой стороны подступить ? |
| Можно попробовать FT_OnTick({|| test()},1) в функции Test и пробуй записывать Или ваять самому https://groups.google.com/forum/#!topic/comp.lang.xharbour/e77vVVb1Kuc
| |
|
|
| |
Пост N: 106
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 15:18. Заголовок: Dima пишет: Можно п..
Dima пишет: цитата: | Можно попробовать FT_OnTick({|| test()},1) в функции Test и пробуй записывать Или ваять самому https://groups.google.com/forum/#!topic/comp.lang.xharbour/e77vVVb1Kuc |
| Буду пробовать...
| |
|
|
|
| |
Пост N: 109
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 17:52. Заголовок: Dima пишет: Func B..
Dima пишет: цитата: | Func Biosdate() #include "hbwin.ch" return GetRegistry( WIN_HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System" ,"SystemBiosDate" ) |
| Error: Unresolved external '_HB_FUN_GETREGISTRY' referenced from... хотя в проект hbwin.hbc подключил...
| |
|
|
| |
Пост N: 3369
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.08.13 18:13. Заголовок: Sergy пишет: Error:..
Sergy пишет: цитата: | Error: Unresolved external '_HB_FUN_GETREGISTRY' referenced from. |
| попробуй win_regGet() У меня Harbour 3.2 у тебя 3.0 вот и отличия ЗЫ Можно еще сырец глянуть win_reg.prg из Hbwin
| |
|
|
| |
Пост N: 110
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 21:54. Заголовок: Dima пишет: попробу..
Dima пишет: цитата: | попробуй win_regGet() У меня Harbour 3.2 у тебя 3.0 вот и отличия |
| Получилось.
| |
|
|
| |
Пост N: 111
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 23:58. Заголовок: Заметил, что ACHOICE..
Заметил, что ACHOICE себя как-то странно ведет. Суть: REPEAT pos := ACHOICE(2,10,2,40,show_array,,,pos) UNTIL (LastKey() == K_ENTER) Да, весь массив в Clipper прокручивается в одной строке - так выбираю логин входящего юзера, чтобы не вводить с клавиатуры. Компактно и поиск по первой букве работает. Плюс стрелками можно выбрать: Savin -> Serebrov -> Silaev... В Harbour при нажатии "стрелка вверх" неожиданно появляется второй элемент массива на третьей строке, т.е. там, где ACHOICE делать вообще нечего... Залез в tests\ac_test.prg Скрытый текст /* * $Id: ac_test.prg 16875 2011-06-14 20:10:06Z vszakats $ */ *+==================================================================== *+ *+ Source Module => ac_test.prg *+ *+ Released to Public Domain. *+ *+ Functions: Procedure test() *+ Function cUserFunction() *+ *+ Tables: use vendor exclusive *+ *+ Reformatted by Click! 1.10 on Aug-13-1997 at 11:39 pm *+ *+==================================================================== #include "achoice.ch" #include "inkey.ch" *+-------------------------------------------------------------------- *+ *+ Procedure test() *+ *+-------------------------------------------------------------------- *+ procedure main() local aPrompts := {; "AGRI-PLANTS" ,; "ALAN R. SMITH GREENHOUSES" ,; "ALLAN MURRAY NURSERY, INC." ,; "APOPKA FOREST" ,; "LIGHT HOUSE NURSERIES" ,; "BAUCOM'S" ,; "BAY HILL NURSERY, INC." ,; "BAYWOOD NURSERIES" ,; "BIG OAK NURSERY" ,; "C & N NURSERY" ,; "CHARLES QUALITY PLANTS" ,; "CONNELL FARMS" ,; "DEWAR NURSERIES, INC." ,; "DIAMOND T NURSERY" ,; "DISTINCTIVE PALMS NURSERIES" ,; "DONKAY NURSERY" ,; "DOUG INGRAM & SONS NURSERY" ,; "DRIFTWOOD GARDENS, INC." ,; "ELVA PLANT NURSERY, INC." ,; "ERINON" ,; "EVANS NURSERY" ,; "FANCY PLANTS" ,; "FL.PLANT GROWERSCOOP" ,; "FLORIDA CACTUS INC." ,; "FLOWERING TREE GROWERS, INC." ,; "FLOWERWOOD NURSERY" ,; "FOLIAGE FACTORY TOO" ,; "GATOR GROWERS NURSERY, INC." ,; "GAZEBO LANDSCAPE DESIGN, INC." ,; "GEM ORNAMENTALS" ,; "GRANNY'S GARDEN" ,; "GRAY'S ORNAMENTALS" ,; "GREEN MASTERS INC." ,; "GREEN MEADOW NURSERY" ,; "PIXLEY'S PLANT PLACE" ,; "HARRISON'S NURSERY, INC." ,; "G & G FOLIAGE" ,; "IVEY'S NURSERY, INC." ,; "JB NURSERIES, INC." ,; "JON'S NURSERY" ,; "JONES & JONES NURSERY, INC." ,; "KAGER'S NURSERY" ,; "KIRKLAND'S NURSERY" ,; "LAND OF BROMELIADS" ,; "LANDSCAPE NURSERY, INC." ,; "LIEWALD'S NURSERY INC." ,; "LLOYD & RINGS NURSERY" ,; "LONG VAN DOUNG" ,; "MAPEL'S LANDSCAPE NURSERY" ,; "MILESTONE AGRICULTURE, INC." ,; "MOJICA NURSERY & FRUITS" ,; "NELSON'S ROSES" ,; "PARK GARDENS" ,; "PAUL LUKAS INC." ,; "PECKETT'S INC." ,; "PENANG NURSERY, INC." ,; "PINES III NURERIES" ,; "PINEVIEW NURSERY" ,; "POUL JENSEN NURSERY" ,; "R.P. WELKER" ,; "RICHARD ROGERS NURSERY, INC." ,; "SPRING HILL NURSERY" ,; "T.O. MAHAFFEY, JR." ,; "TUCKER NURSERY" ,; "TURTLE POND NURSERY" ,; "TUTTLE'S NURSERY INC." ,; "VALLEY CACTUS" ,; "WHISPER WINDS, INC." ,; "WHITE ROSE NURSERIES INC." ,; "WOODWAY" ,; "FLORI-DESIGN" ,; "GREEN ACRES FOLIAGE, INC" ,; "FLORAL EXPO" ,; "TORRES NURSERY" ,; "DARRYL KOON" ,; "TRISTAR NURSERY" ,; "KAY WEST NURSERY" ,; "JAYMAR NURSERY" ,; "J D F LANDSCAPE NURSERY" ,; "DEROOSE PLANTS, INC." ,; "THE TREEHOUSE" ,; "COSTELLO'S ARECAS, INC." ,; "FLORICO FOLIAGE" ,; "THE NATIVES" ,; "GREENS NURSERY" ,; "STEWART NURSERIES" ,; "G & T FOLIAGE, INC." ,; "GOOD TIMES NURSERY" ,; "CONCEPTS IN GREENERY, INC." ,; "DUNN BROTHERS CITRUS, INC." ,; "JOHN PLANK GREENHOUSES" ,; "GREENER PASTURES NURSERY" ,; "MULVEHILL NURSERY" ,; "A NU LEAF" ,; "IVY DESIGNS, INC." ,; "B & C TROPICALS" ,; "SPANISH RIVER NURSERY, INC." ,; "JACK CHRISTMAS & ASSOCIATES" ,; "SPECIALIST GROWERS" ,; "HOMRICH NURSERY, INC." ,; "COUNTRYSIDE FOLIAGE, INC." ,; "RFJ COMPANY" ,; "LAKE BRANTLEY PLANT CORP." ,; "MARISTYME" ,; "MERISTEM NURSERY, INC." ,; "TROPIC DECOR - EARL WILSON" ,; "URQUHART'S NURSERY" ,; "ACE PLANT NURSERY" ,; "HATTAWAYS GREENHOUSE, INC." ,; "Florida Plant Growers" ,; "Junior Nursery" ,; "Fox's Nurseries, Inc." ,; "Vaughan Nursery" ,; "MERRYGRO FARMS" ,; "ALL SEASONS NURSERY" ,; "BENCHMARK FOLIAGE" ,; "SAMMY'S NURSERY" ,; "SUNSHINE GROWERS" ,; "Blooming-Fields Nursery" } local aPermits := {} local x local nChoice local ncntr clear screen setcolor( 'GB+/B,GR+/R,,,W/N' ) SET CURSOR ON asize( aPermits, Len( aPrompts ) ) for x := 1 to Len( aPrompts ) aPermits[ x ] := !( 'V' $ aPrompts[ x ] ) next #define TEST1 #ifdef TEST1 for ncntr := 1 to 17 aPermits[ nCntr ] := .F. aPermits[ Len( aPrompts ) - nCntr + 1 ] := .F. next aPermits[ 32 ] := .F. aPermits[ 33 ] := .F. aPermits[ 34 ] := .F. #endif nChoice := achoice( 5, 10, 20, 70, aPrompts, aPermits, "cUserFunction" ) setpos( 0, 0 ) * clear screen ? nChoice if nChoice > 0 ? aPrompts[ nChoice ] endif setpos( maxrow() - 2, 0 ) return *+-------------------------------------------------------------------- *+ *+ Function cUserFunction() *+ *+-------------------------------------------------------------------- *+ function cUserFunction( nMode, nCurElement, nRowPos ) local nRetVal := AC_CONT // Default, Continue local nKey := lastkey() local nRow := Row() local nCol := Col() HB_SYMBOL_UNUSED( nRowPos ) @ 0, 20 SAY Str( nRow, 3 ) + " " + Str( nCol, 3 ) do case // After all pending keys are processed, display message case nMode == AC_IDLE @ 0, 0 say padr( ltrim( str( nCurElement ) ), 10 ) nRetVal := AC_CONT // Continue ACHOICE() case nMode == AC_HITTOP // Attempt to go past Top @ 0, 0 say "Hit Top " // tone( 100, 3 ) case nMode == AC_HITBOTTOM // Attempt to go past Bottom @ 0, 0 say "Hit Bottom" // tone( 100, 3 ) case nMode == AC_EXCEPT // Key Exception @ 0, 0 say "Exception " do case case nKey == K_RETURN // If RETURN key, select nRetVal := AC_SELECT case nKey == K_ESC // If ESCAPE key, abort nRetVal := AC_ABORT otherwise nRetVal := AC_GOTO // Otherwise, go to item endcase endcase return nRetVal
| Запустил, офигел: У всех так ? Второй файл, ac_test2 тоже работает через Ж...
| |
|
|
| постоянный участник
|
Пост N: 2924
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.08.13 00:15. Заголовок: Sergy пишет: Замети..
Sergy пишет: цитата: | Заметил, что ACHOICE себя как-то странно ведет. |
| Да, он от клипера отличается. Смотри доку и переделывай обработку функций ACHOICE, MEMOEDIT, TBROWSE. Мне тоже пришлось это переделывать. Разницу сейчас не скажу, но делал маленькие тестовые примеры, а потом код перетаскивал в свои системы.
| |
|
|
| |
Пост N: 112
Зарегистрирован: 08.07.06
|
|
Отправлено: 13.08.13 15:26. Заголовок: Andrey пишет: Смотр..
Andrey пишет: Какую именно доку ?
| |
|
|
| постоянный участник
|
Пост N: 2925
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.08.13 18:12. Заголовок: Sergy пишет: Какую ..
| |
|
|
| |
Пост N: 113
Зарегистрирован: 08.07.06
|
|
Отправлено: 13.08.13 22:30. Заголовок: Andrey пишет: http:..
| |
|
|
| постоянный участник
|
Пост N: 900
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.08.13 08:31. Заголовок: Да, с AChoice косяк ..
Да, с AChoice косяк есть... Хех... В тех исходниках, что у меня (а они довольно старые, от 30.01.2013), в achoice.prg увидел следующее: /* TOFIX: --- #include "inkey.ch" CLS hb_keyPut( { K_DOWN, K_UP } ) // bogus '2' appears out of the area here. AChoice( 0, 0, 0, 0, { "1", "2" } ) --- */ Так что баг уже давно замечен. Осталось, чтобы кто-то его вылечил... ))) У кого есть свежие исходники? Там не исправлено еще? update: Сечас посмотрел на git. Не исправлено... ((( Ну что ж, либо забить, либо искать косяк в achoice.prg и исправлять.
| |
|
Ответов - 285
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|