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

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

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

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

wad1: Тут все зависит от используемых индексов. Старая схема - это что?

NatalyS: Все здесь работает только на Клиппере в DOS. Сама я его не знаю еще. Сейчас ставится задача найти решение адаптации под Windows и разработки нормального графического интерфейса. Файлы индекса *.ntx. И еще. Версия Clipper 5.01 стоит.

Andrey: Читайте здесь на форуме как переходить с ДОСа на Харбор ! Проблем нет в переходе. Только с граф.интерфейсом придется потерпеть, не так быстро делается...


NatalyS: А что посоветуете: Harbour или xHarbour? И что выбрать для разработки граф.интерфейса? Чтобы хотя бы знать направление копания

AndreyZh: ПРОВЕРЕНО! ИНДЕКСЫ НЕ СОВМЕСТИМЫ, следовательно невозможна совместная работа Clipper и Harbour приложений с одной базой данных! Почитайте тему, где сильно "мучил" местных ГУРУ http://clipper.borda.ru/?1-4-40-00000527-000-0-0-1270323717

wad1: Проверено. С драйвером SIXCDX нормально работают Clipper (5.2E), Harbour и Delphy с драйвером Appolo. И такая связка работает в течение нескольких лет примерно у 200 пользователей.

Andrey: NatalyS пишет: А что посоветуете: Harbour или xHarbour? И что выбрать для разработки граф.интерфейса? Чтобы хотя бы знать направление копания Здесь на форуме эти вопросу обсуждались ! ЧИТАЙТЕ ! Есть инструкции по быстрому переходу на хХарбор ! Для граф.интерфейса лучше MiniGui !

NatalyS: Всем спасибо за ответы. Выдает ошибку Error E0001 Statement not allowed outside of procedure or function. Что это может значить?

Pasha: Скорее всего, выполняемые операторы начинаются сразу с начала модуля, без procedure/function Чтобы собрать такой модуль, надо убрать ключ компилятора -n

Andrey: NatalyS пишет: Всем спасибо за ответы. Выдает ошибку Error E0001 Statement not allowed outside of procedure or function. Что это может значить? Ну блин, здесь на форуме одни экстрасенсы !!! Наверно нужно заявку подавать в телепрограмму "Битва экстрасенсов" ... А по внятней написать можно ? Каким компилятором собирает проект, какой файл-проекта, через чего проект собираем ?

NatalyS: Я, конечно, понимаю, что пишу непонятно. Просто я сама даже не знаю, что спросить и как. В общем что я вижу: использую xHarbour v.1.20.01, руководствовалась Вашим мануалом, Andrey. Затык начинается на этапе компиляции: Выдается гора ошибок Error E0001 Statement not allowed outside of procedure or function. Наши программисты дали мне тестовую задачу. На мою машину скопировали prg и ch файлы, которые я все скопировала в папку SOURCE. Еще здесь используется такая штука: текстовый документ, указывающий путь к используемой базе. Программисты скептически относятся к идее перехода, потому тыкаюсь сама. И нужно изобразить, что все получится хорошо и что можно перетаскивать всю систему (ооочень большая. Машиностроительный завод с наработками на Клиппере за n-ное число лет). Пытаюсь найти мануал "Для чайников", чтобы понять,что у Вас спросить. В общем, целая поэма:-)

Dima: Andrey Спокойнее гусары , спокойнее ;) Вежливее надо быть

Pasha: Андрей у нас строгий :) А по поводу ошибки компиляции - так причина та, что я написал. У клиппера есть такой архаичный режим - можно создавать модуль без оформления главной функции/процедуры, и такой модуль надо собирать без флажка /n. Похоже у вас именно так и делается

Dima: NatalyS пишет: Наши программисты дали мне тестовую задачу А начните с простой задачи Proc Main() ? "Hello world!" wait return nil

Pasha: NatalyS пишет: В общем что я вижу: использую xHarbour v.1.20.01 В качестве полигона можно использовать и xHarbour, но сейчас Harbour продвинулся далеко вперед, так что в качестве рабочего инструмента сейчас лучше ориентироваться на него

Andrey: NatalyS пишет: Наши программисты дали мне тестовую задачу. На мою машину скопировали prg и ch файлы, которые я все скопировала в папку SOURCE. Еще здесь используется такая штука: текстовый документ, указывающий путь к используемой базе. Давайте Архив вашей задачи. Я сам соберу быстрей.... NatalyS пишет: Программисты скептически относятся к идее перехода, потому тыкаюсь сама. И нужно изобразить, что все получится хорошо и что можно перетаскивать всю систему (ооочень большая. Машиностроительный завод с наработками на Клиппере за n-ное число лет). Давайте нос утрем этим программистам ! И все у нас получиться хорошо, так как Харбор рулит лучше всех !

Pasha: Andrey пишет: Давайте Архив вашей задачи. Я сам соберу быстрей.... Так надо не наловить рыбы, а научить ловить рыбу

NatalyS: Да, хотелось бы научиться. Эм, снова дилетантский вопрос: где искать сей флажок /n?

PSP: NatalyS пишет: где искать сей флажок /n Это - параметр компилятора Clipper.exe Запустите его без параметров и увидите.

Andrey: NatalyS пишет: Эм, снова дилетантский вопрос: где искать сей флажок /n? Для ответа на ваш вопрос следует ВАМ ответить на мой предыдущий вопрос. Чем собран ВАШ проект ? Если вы собирали по моей документации, то я не знаю по какой ? У меня их несколько ! Если для хХарбор, то я там описываю утилиту HBMAKE ! И там есть включение/отключение ключа - /n ! Вы видите NatalyS, сколько если.... Хватит наверно делать из меня экстрасенса...

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" - это возвращаемая строка. вот так вот...

Urri: Добрый день. Как я понял ключевой тезис - одновременная работа с Клиппером и xHarbour. Индексы действительно несовместимы: малозаметно на первый взгляд, но когда начинает вылетать на ровном месте - очень непонятно и обидно (сам когда-то попадался). По моему мнению решение может быть таким: быстренько приделать к имеющимся Клиппер программам такую классную штуку как ADS, а потом при постепенной переделке программ на xHarbour тоже использовать ADS, т.е. Клиппер и xHarbour будут работать с единой системой построения-использования индексов и конфликта не будет. Кроме этого ADS имеет свои дополнительные плюсы, которые очень даже помогают в работе (15 лет работаю с ADS).

Andrey: asterixik пишет: Так вот в клиппере модуль работал норм, а в xHarbour стала выдаваться ошибка, Харбор более строг при компиляции и в работе. Что Клипер проглатывал и работал, здесь не пройдет. Сам сначала мучился с этим. Но это даже лучше, как потом выяснилось. Программа перестала падать вообще ! Так что привыкайте !



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