Форум » [x]Harbour » Постепенный переход на xHarbour » Ответить

Постепенный переход на xHarbour

NatalyS: Добрый день. Поставили задачу создания приложений под Windows. Вопрос такой: Если часть пользователей будет работать по старой схеме, а часть уже по новой, то не будет ли конфликта с базой? Я так понимаю, сама база не затрагивается при создании новых приложений, но хотелось бы ответа знатоков

Ответов - 42, стр: 1 2 3 All

NatalyS: Использую HBMAKE. Мне может помочь только экстрасенс Потому как не могу описать сути происходящего сразу:-) Ваш документ вот: Перенос проекта с Clipper на xHarbour Compiler build 0.99.71 и выше… Не нашла ничего там про ключ /n

Pasha: PSP пишет: NatalyS пишет: цитата: где искать сей флажок /n Это - параметр компилятора Clipper.exe Запустите его без параметров и увидите. Только не клиппер, мы же харбором собираем Надо в батниках сборки найти вызов harbour.exe, и убрать эту опцию

AlexMyr: Если для Harbour, то создается файлик допустим proj1.hbp с содержимым: -trace file1.prg file2.prg ... И потом комманда hbmk2 proj1.hbp >log.txt Если какие ошибки, то log.txt можна показать тут и дальше получить указания что дальше.


PSP: Pasha пишет: Только не клиппер, мы же харбором собираем Упс... Сорри. :)

Andrey: NatalyS пишет: Использую HBMAKE. Мне может помочь только экстрасенс Потому как не могу описать сути происходящего сразу:-) Ваш документ вот: Перенос проекта с Clipper на xHarbour Compiler build 0.99.71 и выше… Не нашла ничего там про ключ /n Экстрасенсы все в отпуске, когда будут не знаю !!!! Предлагаю поставить программу для управления вашим компьютером через интернет (Спасибо Диме !). http://www.teamviewer.com/ru/download/index.aspx После установки запустите ее и передайте ваши ID и пароль ! (можно мне в Skype - мой номер: gen1629500) Тогда я тогда смогу посмотреть и исправить на вашем компьютере программу. И вы сможете наблюдать весь процесс правки !

Pasha: NatalyS пишет: Использую HBMAKE Я посмотрел hbmake. Там опция -n используется всегда, и нет возможности ее убрать. Создатели этой утилиты не предусмотрели такой случай. Вывод: собрать ваши программы с помощью hbmake не получится Попробуйте собрать программу просто батником К примеру так: Файл cl.bat: %HB_INSTALL%\bin\harbour %1.prg -l -w -v -i%HB_INSTALL%\include;e:\ts\app.lib %2 %3 bcc32 -c -O2 -M -tW -Id:\bcc55\include;%HB_INSTALL%\include %1.c Файл bld.bat: @echo off set HB_INSTALL=c:\xharbour call cl %1 call cl file2 call ... rem перечислить все модули IF EXIST %1.rc brc32 -r %1 echo d:\bcc55\lib\c0w32.obj + > b32.bc echo %1.obj + >> b32.bc echo file2.obj, + >> b32.bc rem перечислить все файлы obj echo %1.exe, + >> b32.bc echo %1.map, + >> b32.bc echo %HB_INSTALL%\lib\common.lib + >> b32.bc echo %HB_INSTALL%\lib\debug.lib + >> b32.bc echo %HB_INSTALL%\lib\fmstat.lib + >> b32.bc echo %HB_INSTALL%\lib\vm.lib + >> b32.bc echo %HB_INSTALL%\lib\rtl.lib + >> b32.bc echo %HB_INSTALL%\lib\gtwin.lib + >> b32.bc echo %HB_INSTALL%\lib\gtwvt.lib + >> b32.bc echo %HB_INSTALL%\lib\lang.lib + >> b32.bc echo %HB_INSTALL%\lib\codepage.lib + >> b32.bc echo %HB_INSTALL%\lib\macro.lib + >> b32.bc echo %HB_INSTALL%\lib\pcrepos.lib + >> b32.bc echo %HB_INSTALL%\lib\rdd.lib + >> b32.bc echo %HB_INSTALL%\lib\ct.lib + >> b32.bc rem echo %HB_INSTALL%\lib\rddads.lib + >> b32.bc rem echo %HB_INSTALL%\lib\ace32.lib + >> b32.bc echo %HB_INSTALL%\lib\dbfntx.lib + >> b32.bc echo %HB_INSTALL%\lib\dbfcdx.lib + >> b32.bc echo %HB_INSTALL%\lib\dbffpt.lib + >> b32.bc echo %HB_INSTALL%\lib\hbsix.lib + >> b32.bc echo %HB_INSTALL%\lib\pp.lib + >> b32.bc echo %HB_INSTALL%\lib\hbodbc.lib + >> b32.bc echo d:\bcc55\lib\psdk\odbc32.lib + >> b32.bc :end echo d:\bcc55\lib\cw32.lib + >> b32.bc echo d:\bcc55\lib\import32.lib, >> b32.bc IF EXIST %1.res echo %1.res >> b32.bc ilink32 -Gn -Tpe -x @b32.bc rem ilink32 -Gn -Tpe -s -aa @b32.bc del *.tds rem del %1.c rem del %1.map del %1.obj del b32.bc

NatalyS: Всем спасибо за помощь:-) Начальство дало отбой.

asterixik: Здравствуйте. Проблема состоит в следующем: на предприятии эксплуатируются несколько программных комплексов написанных на Clipper 5.01 (DBFNTX, базы в сетевых папках, базы представляют из себя таблицы с небольшим кол-вом полей 4 - 10, преимущественно строкового типа, количество записей в таблицах доходит до 600000, писатся всё это начиналось ещё в 1991, и вот до сих пор поддержуется, дописывается). Операционки на раб. станция ХР, соответственно программы запускаются в ntvdm и сильно тормозят системы. Руководство рассматривает 2 варианта: либо полностью переписывать постепенно комплексы на клиент-сервер (Ms SQL Serv, ADO, Delphi), либо перекомпилить все в (x)Harbour. Понятно что перекомпилить быстрее и проще (по идее, когда знаешь как и что). На данный момент стоит задача перевода одного из комплексов (более 60 исполняемых модулей). Воспользовался руководствами от Андрея и TimTim которые есть тут на форуме по переходу с Клиппера. Небольшие модули нормально откомпилировались в xHarbour, и нормально работают. Сейчас взялся за перевод самого крупного модуля комплекса (в модуле идет анализ множества таблиц, их пересоздание, дозапись и т.д.). Начали сталкиваться с проблемами, что не работает dbSeek (по всей видимости из-за индексов) и прочими. Тут же в какой-то ветке на форуме вычитал что необходимо вначале перевести проект с 5.01 до 5.2 (сделать совместимым) а потом уже перекомпилировать в Harbour. Искал в поисковиках и на форуме но так и не смог найти какой-нидь changelog или что-нидь подобное по поводу того что изменилось в 5.2 по сравнению с 5.01, то бишь куда глядеть. Сейчас большой модуль в xHarbour компилится и строится норм, но при работе с базами, в какой-то момент выдает ошибку, причем в error.log есть ссылка на строчку ошибки но там вызов самописной процедуры процедуры в которой ещё вызовы кучи самописных процедур, и найти концы, то есть - источник ошибки мне мои знания на данный момент не предоставляют возможность. Хочу обратится к тем кто уже переводил проекты из Clipper 5.01 в Harbour (или на Clipper 5.2) подскажите на что в первую очередь стоит обратить внимание? Решение стоящей задачи усугубляется тем, что исходники ЯП Clipper я первый раз в жизни увидел в минувший понедельник, до этого когда-то во время учебы (в 2003 году) разве что программировал чуть-чуть на FoxPro 2.5b. То бишь специфику Клиппера (которая наверняка есть) не знаю, а определится с возможностями перевода комплекса надо в течение февраля :-( Сам программирую на PHP, Delphi.

AndreyZh: asterixik пишет: Здравствуйте. Проблема состоит в следующем... Операционки на раб. станция ХР, соответственно программы запускаются в ntvdm и сильно тормозят системы... Однозначно переписывайте, тем более не очень сложная задача... Но по скорости в Clipper задачах всё должно "летать" - посмотрите учебник по настройке ОС: http://www.zhsoft.nm.ru/hand_set/hand_set.htm

Dima: AndreyZh пишет: Но по скорости в Clipper задачах всё должно "летать" Достаточно прицепить эту строку (как минимум) ft_onidle({|| ft_iamidle(15,ol_isnt())})

Pasha: asterixik пишет: Начали сталкиваться с проблемами, что не работает dbSeek (по всей видимости из-за индексов) и прочими. Тут же в какой-то ветке на форуме вычитал что необходимо вначале перевести проект с 5.01 до 5.2 (сделать совместимым) а потом уже перекомпилировать в Harbour. Искал в поисковиках и на форуме но так и не смог найти какой-нидь changelog или что-нидь подобное по поводу того что изменилось в 5.2 по сравнению с 5.01, то бишь куда глядеть. Старые модули на клиппере и новые на харборе открывают одним и те же индексы ? Клиппер и харбор по индексам несовместимы, будут возникать как раз такие ошибки. И пересборка на 5.2 не поможет. Надо избегать такой совместной работы. То есть, если вся система завязана на одну БД, то переводить надо ее полностью. Если отдельные подсистемы работают со своими БД - переход возможеи поэтапно. ЗЫ и советую сразу начать использовать LetoDB. На его освоение конечно уйдет время, но это стоит того. Все-таки это настоящий клиент-сервер, то есть совсем другой уровень производительности и надежности.

asterixik: Pasha пишет: Старые модули на клиппере и новые на харборе открывают одним и те же индексы ? Клиппер и харбор по индексам несовместимы, будут возникать как раз такие ошибки. Понятно. В том то вся и проблема что имеющися коплексы используют некоторые общие базы (различные справочники по номенклатуре, планированию и т.д. предприятия), причем разные комплексы сопровождают разные подразделения программистов :-( По поводу не совместимости индексов ткак-то запутано, потому как в одном случае (вот с большим модулем который описывал) действительно не работает поиск, а в другом случае (небольшой модуль, анализирует старую dbf-ку и создает на её основе новую в том числе индексирует), сравнивали в Total Commander сравнением файлов dbf и ntx файлы полученные до (результат clipper-а) и после (результат xharbour) и увидели что в dbf немного различаются заголовки, то бишь первыё несколько сотен байт файла, дальше вс одинаково, а ntx вообще полностью идентичны.

asterixik: Спасибо за ответы :-) AndreyZh пишет: Однозначно переписывайте, тем более не очень сложная задача... улыбнуло, переписывать несколько сотней модулей которые делались несколькимидесятками программистов в течение 20 лет (при том что не везде все норм прокомментировано) - я бы не назвал эт "не очень сложной задачей"... учитывая то что имеющиеся в наличии программисты с Ms SQL Server практически не работали :-( Ссылочка на учебник не работаит :-( Вообще сайт zhsoft.nm.ru не открывается. Dima пишет: Достаточно прицепить эту строку (как минимум) ft_onidle({|| ft_iamidle(15,ol_isnt())}) Это чего, куда и как? В инете нагуглил что это из библиотеки Nanfor.lib, но насколько понял это библиотека для 5.2 Клиппера? И всё же, по существу, на что (на какие функции, операции) обращать внимание при переводе проекта сделанного в 5.01 на 5.2 ( [x]Harbour)?

Dima: asterixik Зарегистрируйтесь на форуме если не сложно.

Pasha: asterixik пишет: Понятно. В том то вся и проблема что имеющися коплексы используют некоторые общие базы (различные справочники по номенклатуре, планированию и т.д. предприятия), причем разные комплексы сопровождают разные подразделения программистов :-( По поводу не совместимости индексов ткак-то запутано, потому как в одном случае (вот с большим модулем который описывал) действительно не работает поиск, а в другом случае (небольшой модуль, анализирует старую dbf-ку и создает на её основе новую в том числе индексирует), сравнивали в Total Commander сравнением файлов dbf и ntx файлы полученные до (результат clipper-а) и после (результат xharbour) и увидели что в dbf немного различаются заголовки, то бишь первыё несколько сотен байт файла, дальше вс одинаково, а ntx вообще полностью идентичны. Различия в заголовке дбф совершенно несущественны. А с индексами - если они созданы клиппером, и используются на чтение, то проблем по-видимому не возникнет Они будут после обновления данных (и соответственно индексов). Так что работу в таком режиме следует избегать ЗЫ зарегистрируйтесь на форуме, пожалуйста, и тогда Ваши сообщения будут появляться сразу

asterixik: С заголвками - понятно Зарегистрироваться что-то не получается :-(, вчера ставил галочку и сегодня тоже ставил и без галочки "зарегистрироваться" писал - всё равно не авторизирует :-( Браузер FFX 3.6.13

Петр: asterixik пишет: либо перекомпилить все в (x)Harbour. большой модуль в xHarbour компилится из Clipper 5.01 в Harbour Вы определитесь, какой инструмент собираетесь использовать Harbour или xHarbour. Это не совсем одно и тоже. asterixik пишет: на предприятии эксплуатируются несколько программных комплексов написанных на Clipper 5.01 исходники ЯП Clipper я первый раз в жизни увидел в минувший понедельник, до этого когда-то во время учебы (в 2003 году) разве что программировал чуть-чуть на FoxPro 2.5b. То бишь специфику Клиппера (которая наверняка есть) не знаю имеющися коплексы используют некоторые общие базы (различные справочники по номенклатуре, планированию и т.д. предприятия), причем разные комплексы сопровождают разные подразделения программистов Руководство рассматривает 2 варианта: либо полностью переписывать постепенно комплексы на клиент-сервер (Ms SQL Serv, ADO, Delphi), либо перекомпилить все в (x)Harbour Руководство сначала бы определилось кому поручить работу, а не сколько денег на ветер выбросить (хотя бюджет и сроки - это тоже важно).

Andrey: asterixik пишет: И всё же, по существу, на что (на какие функции, операции) обращать внимание при переводе проекта сделанного в 5.01 на 5.2 ( [x]Harbour)? На хХарбор все прекрасно переводиться с Клипера, я не думаю что у вас есть какие-то вставки на С и ASM !!! Вопрос переноса 1-2 недели на хХарбор и несколько месяцев переписывания на Delphi - Пускай уж ваше руководство выбирает что делать ..... А клиент-сервер и на хХарборе уже есть ! Читайте про LetoDB !!! Что не компилируется, можете задавать вопросы, ответим. Я сам чужих проектов уже штук 5 перенес на хХарбор. Всё просто переносится, практически без проблем. Читайте здесь на форуме, повторяться не хочется. Удачи вам !

gustow: asterixik , для начала элементарно поборем "100% загрузку процессора под XP". Скачиваешь тут http://www.davep.org/clipper/#OSLib библиотечку OS.LIB (махонькая - 6 кб), кладешь ее в подпапку LIB Clipper'a, линкеру указываешь ее в строке с другими библиотеками - ну, типа для RTLINK'а file MAIN.obj lib oslib.lib, ct250.lib а в программе (в головном модуле самой первой из _исполняемых строк - после LOCAL'ов, если они есть) добавляешь строку OL_Autoyield(.T.) // чтобы не висла под 2000-й/XP (грамотно отдает timeslice) и теперь клипперская прога ведет себя как "приличное" приложение в многозадачной среде (жрет свои махонькие - ну, это по ситуации, - проценты загрузки, систему не тормозит). У меня проги, писаные на Clipper 5.01 + библа Clipper Tools II, работают под XP вполне себе нормально (даже те, где - кроме этой строчки - года с 95-96го вообще больше изменений не было; есть и такие... медицина - страшно консервативная штука :) ). А вообще-то переводиться на [x]Harbour'ы какие-нибудь надо.

asterixik: gustow спасибо, завтра на работе попробую :-) Пока что переводим в xHarbour. Кстати, вот ошибка была в программе (я выше писал) которая в клиппере работала норм а в xHarbor вызывало ошибку: в программе была самописная функция GoTop которая возвращала либо .Т. либо строку, и эта функция стояла в качестве условия в IF. Так вот в клиппере модуль работал норм, а в xHarbour стала выдаваться ошибка, мол: не верное значение строка, если точнее то: Error BASE/1066 Argument error: conditional Arguments: ( [ 1] = Type: C Val: a>="43") a>="43" - это возвращаемая строка. вот так вот...



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