Форум » [x]Harbour » Перевожу Clipper на консольный Харбор » Ответить

Перевожу Clipper на консольный Харбор

MIKHAIL: Добрый день, уважаемое сообщество! Перехожу на Харбор, собрал программу, начинаю бороть ошибки несовместимости кода, по мере появления вопросов надеюсь на скорую помощь. Заранее всем участникам огромное спасибо!

Ответов - 245, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

Dima: MIKHAIL hb_DynCall Например [pre2] #include "hbdyn.ch" FUNCTION MAIN(cSource, cDest) hb_DynCall( { "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, cSource, cDest, 0 ) RETURN NIL [/pre2]

MIKHAIL: Dima пишет: hb_DynCall( { "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, cSource, cDest, 0 ) А эта функция возвращает ответ вызываемой функции? И как обрабатывать ошибки?

Dima: Да что то возвращает. https://github.com/vszakats/harbour-core/blob/master/tests/dynwin.prg


Mitek: Занялся переносом на консольный xHarbour средних размеров проекта( ~ 800к исходников). Не находит 11 функций из состава СT NNETLOGGED NNETCAPACT NNETSETQ NNETCAPSSF NNETCAPBEG SPOOLACTIV SPOOLADD PRINTINIT BIOSDATE STACKFREE FILECHECK На что можно заменить или где взять более полную библиотеку ? Поиск по либам как советовали в теме http://clipper.borda.ru/?1-4-0-00000255-000-0-0-1334307608 не приносит результатов за исключением функции STACKFREE которая находитмя в vm.lib vm.lib у меня и до поиков линкновалась Версия xHarbour xHarbour Binaries 1.2.3 Rev. 10193 for BCC 5.5.1

PSP: Mitek пишет: Занялся переносом на консольный xHarbour А почему не Harbour?

Mitek: PSP пишет: А почему не Harbour? А собственно просто уже лет этак много xHarbour пользую но до сего древнейшего проекта все руки не доходили. Но собственно сути это не меняет... на harbour без X в оригинальных поставках я этих функций тоже не вижу... например в harbour-3.0.0-win Пока в голову только идет переопределить SPOOLACTIV - #xtranslate SPOOLACTIV()=> .F. SPOOLADD - #xtranslate SPOOLADD()=> .F. BIOSDATE почитать из реестра - #xtranslate BIOSDATE()=>CTOD ( GetRegistry(, 'HARDWARE\Description\System\BIOS', 'BIOSReleaseDate' ) ) ну или для Harbour - #xtranslate BIOSDATE()=> CTOD( win_regRead( "HKLM\HARDWARE\Description\System\BIOS\BIOSReleaseDate" ) ) STACKFREE - #xtranslate STACKFREE()=> 1000000 FILECHECK через md5 - #xtranslate FILECHECK(<cFileName>) => HB_MD5FILE(<cFileName>) Что делать с остальными пока не думал ... Просто типа размечтался что может кто подскажет где уже опробованные качнуть

PSP: В harbour есть библа hbct. Посмотрите.

Mitek: PSP Да смотрел я на эту библу еще пару лет назад и что . Нет там этих функций собственно так же как и в ее аналоге от xHarbour - CT.lib

PSP: А так уж эти функции все нужны? К примеру, NNet* предназначены для работы с Novell Netware. У вас используется сервер Novell Netware? Функция SPOOLACTIV - что-то связанное с печатью в DOS. Надо? Ну и т.д. Придется вам слегка код поправить.

MIKHAIL: Столкнулся с проблеммой. Перевел проект с Clipper 5.3 на Harbor 3.2 сервер NW + ADS7, пока отладка идет одновременно использую старую и новую версию программы. Обнаружил что индексы (ntx) по строке не корректно работают или не совместимы. Т.е. при создании индексов программой Clipper они не корректно отображаются в программе Harbora и с точностью наоборот. Странное дело, ведь индексы строит ADS. Длинна ключа в обеих случаях одинаковая. при этом DBFNTX драйвер работает корректно для обеих версий. Есть у кого мысли?

Dima: MIKHAIL У меня была похожая связка под ADS 5.xx , индексы IDX , работало нормально. PS Изначально были какие то глюки (уже не помню подробности) , Павел тогда помог и что то переделал в RDDADS Harbour. Dima пишет: (уже не помню подробности) Вроде связанное с кирилицей и 866 кодировкой

MIKHAIL: А есть какая то опция в компиляторе, что бы не весь проект заново собирался, а только измененные файлы? типа как в блинкере была инкрементальная сборка...

PSP: MIKHAIL пишет: А есть какая то опция в компиляторе, что бы не весь проект заново собирался, а только измененные файлы? типа как в блинкере была инкрементальная сборка... hbmk2 имеет опцию -inc

MIKHAIL: Есть файл базы данных товаров, порядка 100тыс. Как можно отследить что были изменены в ней определенные поля без полного сканирования ? Пробовал использовать время создания файла на диске, но видимо из за кэша, оно обновляется не сразу, если речь не идет о добавлении записей, dbcommit() не помагает.

Dima: MIKHAIL можно ввести еще одно поле TIMESTAMP и в случае изменения нужно поля писать в новое поле свежее значение

Andrey: Dima пишет: можно ввести еще одно поле TIMESTAMP и в случае изменения нужно поля писать в новое поле свежее значение Поле типа TIMESTAMP [pre2] AADD( aDbf , {"TS" ,"=", 8, 0 } ) // RDD-TimeStamp дата+время+миллисекунды[/pre2] автоматом само меняет значение при изменение любого поля записи. Наверное лучше использовать другой тип поля вот этот: [pre2]AADD( aDbf , {"IM" ,"@", 8, 0 } ) // TimeStamp, заполняешь сам[/pre2] и заполнять при изменении нужных тебе полей самостоятельно.

MIKHAIL: Andrey пишет: автоматом само меняет значение при изменение любого поля записи. это очень хороший вариант, если под NTX оно работает, проверю, спасибо!

MIKHAIL: Потребовалось пересобрать DBU, у меня почему то нет патча для него DBU53.RTP, где его можно взять?

Петр: Скачать архив См. extras\dbu

Andrey: MIKHAIL пишет: это очень хороший вариант, если под NTX оно работает, проверю, спасибо! Скорее всего под NTX не заработает - это чисто MSFOX примочка, для Клипера и Харбора нужно переходить на CDX-драйвер !



полная версия страницы