Форум » [x]Harbour » Предложение... и ламерские вопросы » Ответить

Предложение... и ламерские вопросы

AndreyZh: Добрый день уважаемые специалисты! Попробовал перевести часть большого проекта на Clipper 5.01R+CTII под xHarbour в плане проверки "быстродействия" и поверхностного анализа проблем совместимости. СПАСИБО Верченко Андрею за его инструкцию!!! Некоторый предварительные (для меня) результаты: 1. Оконная система CT поддерживается в xHarbour; 2. Быстродействие xHarbour в математике в 8 раз быстрее (наверное использование RAM), а на базах примерно на 30% быстрее, что очень заманчиво. Т.е. есть резон пытаться перевести часть "некритичных" приложений на [x]Harbour. НО!!! Натолкнулся на ряд технических и организационных проблем... Главная из которых отсутствие в "удобном" доступе документации и весьма полезных инструкций/программ (на русском языке), хотя они имеются в наличии, как правило авторы размещают их в хранилищах с ограниченным сроком хранения и мои попытки скачать их натыкаются на сообщение "файл удалён из хранилища". ПРЕДЛОЖЕНИЕ: На своём сайте могу сделать страницу со ссылками на полезные программы и документацию, а так же разместить на сайте архивы данной (весьма полезной информации), выделив под это до 100mb (хостинг халявный и ограниченный по размеру). Для этого пришлите мне пожалуйста на почту zhsoft///@///mail.ru копии архивов документации с кратким оглавление и авторством. В частности руссификацию xMate, инструкцию по переводу приложений, какую нибудь документацию по языку и RDD и т.д. ВОПРОСЫ 1. Правильно ли понял, что заброшены многие полезные проекты под Harbour типа miniGui, xMate, hwGui и что это "нормальная практика" развития проекта Harbour? 2. Пожалуйста предложите "свободную" связку для создания графических приложений одновременно под Win32/64/Linux типа FrameWork+Gui+[x]Harbour+ReportSystem+RddSQL(free), но которая развивается по настоящее время и существует хотя бы 3 года, например, как понял возможен вариант xMate + hwGui + xHarbour, но всё кроме Harb брошено в 1996 году, т.е. неперспективно. 3. Натолкнулся на ряд несовместимостей (в препроцессоре, использовании "внешних" функций на C)! Если не сложно - приведите другие примеры несовместимости и глюков [x]Harbour, которые необходимо "особо" обходить! Важная мелочь? Что проблема работы с 866 кодировкой в Upper/Lower не решена? Это критично, т.к. используется в индексах, да и предполагаю продолжать развитие Clipper проекта, постепенно убирая несовместимости с Harbour пока на 100% не буду уверен в "безглючности" Harbour. Что нет функции TempFile() из CT в xHarbour? Заранее спасибо за ответы!!!

Ответов - 139, стр: 1 2 3 4 5 6 7 All

Pasha: AndreyZh пишет: 1. Не увидев ответа сам поискал на буржуйских сайтах - проблема не решена (до 25.02.2010) и самое "лучшее" предложение заменить "приложенным" C модулем, соответствующий модуль xHarbour и пересобрать проект, т.е. компилятор превращать в самописку. 2. Свежее, чем у меня официальных сборок xHarbour - НЕТ. Использовать самосборки - как потом контролировать инструмент. 3. Уже пояснил, что не любитель "системного" программирования, да и времени на это не очень много.... Да это же не системное программирование, да и не программирование вообще. Это сборка. То есть настроил среду, запустил батник и получил готовый харбор. Впрочем, как хотите, Ни заставлять, ни агитировать, ни уговаривать я не буду, мне то это зачем. Мое дело - обрисовать текущее состояние и помочь в решении проблем, если такие возникнут. А баг с upper таки исправлен. Кто-нибудь, проверьте еще для ясности. Кстати, я сам использую сборку харбора с этим багом, и знаю о нем. Просто у меня заведомо нет конструкций, где upper вызывается со строковой константой, а не с переменной или полем таблицы.

Dima: Pasha пишет: Local cStr := 'Вася' REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) ? Upper('Вася') ? Upper(cStr) wait Проверил ? Upper('Вася') // не работает Текст с такой [pre2] HB_FUNC( MAIN ) { static const BYTE pcode[] = { /* 00000 */ HB_P_BASELINE, 3, 0, /* 3 */ HB_P_PUSHSYMNEAR, 2, /* HB_SETCODEPAGE */ HB_P_PUSHNIL, HB_P_PUSHSTRSHORT, 6, /* 6 */ 'R', 'U', '8', '6', '6', 0, HB_P_DOSHORT, 1, /* 00016 */ HB_P_LINEOFFSET, 3, /* 6 */ HB_P_PUSHSYMNEAR, 3, /* QOUT */ HB_P_PUSHNIL, HB_P_PUSHSYMNEAR, 4, /* UPPER */ HB_P_PUSHNIL, HB_P_PUSHSTRSHORT, 5, /* 5 */ 162, 160, 225, 239, 0, HB_P_FUNCTIONSHORT, 1, HB_P_DOSHORT, 1, /* 00035 */ HB_P_LINEOFFSET, 4, /* 7 */ HB_P_PUSHSYMNEAR, 3, /* QOUT */ HB_P_PUSHNIL, HB_P_DOSHORT, 0, /* 00042 */ HB_P_LINEOFFSET, 5, /* 8 */ HB_P_ENDPROC /* 00045 */ }; hb_vmExecute( pcode, symbols ); } [/pre2]

Dima: AndreyZh пишет: у меня индексы Upper(name) в индексах работает нормально.


Pasha: А такой тест: REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) ? Upper('Вася') wait какой будет код на C ?

AndreyZh: Господа, а можно мне на почту zhsoft@mail.ru прислать необходимые файлы, что бы не связываться со "сборками", а то жалко бросать начатые эксперимент?

Dima: Pasha пишет: какой будет код на C ? [pre2] HB_FUNC( MAIN ) { static const BYTE pcode[] = { /* 00000 */ HB_P_BASELINE, 6, 0, /* 6 */ HB_P_PUSHSYMNEAR, 2, /* HB_SETCODEPAGE */ HB_P_PUSHNIL, HB_P_PUSHSTRSHORT, 6, /* 6 */ 'R', 'U', '8', '6', '6', 0, HB_P_DOSHORT, 1, /* 00016 */ HB_P_LINEOFFSET, 1, /* 7 */ HB_P_PUSHSYMNEAR, 3, /* QOUT */ HB_P_PUSHNIL, HB_P_PUSHSYMNEAR, 4, /* UPPER */ HB_P_PUSHNIL, HB_P_PUSHSTRSHORT, 5, /* 5 */ 130, 160, 225, 239, 0, HB_P_FUNCTIONSHORT, 1, HB_P_DOSHORT, 1, /* 00035 */ HB_P_LINEOFFSET, 2, /* 8 */ HB_P_PUSHSYMNEAR, 5, /* __WAIT */ HB_P_PUSHNIL, HB_P_DOSHORT, 0, /* 00042 */ HB_P_LINEOFFSET, 3, /* 9 */ HB_P_PUSHNIL, HB_P_RETVALUE, HB_P_ENDPROC /* 00047 */ }; hb_vmExecute( pcode, symbols ); } [/pre2] Pasha пишет: REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) ? Upper('Вася') wait ? Upper('Вася') // не работает

Pasha: AndreyZh пишет: Опять наврал! Назначал после использования (на Clipper прокатывало) oTB := TBRowseDB(7,1,23,78) oTB:headSep := Chr(196) oTB:addColumn( TBColumnNew("ДатаНак.|N_ накладной|КодН|О|СуммаСоСкид.|Отср.| Ост.оплата |КодД|Сч|З|О|Р|У|Г",{|| cDemoInvRR() }) ) PRIV oTb Я не очень понял, где возникает ошибка. Здесь переменная oTb создается оператором Private 2-й раз, после того как она была создана неявно операцией присваивания ?

Pasha: Dima пишет: ? Upper('Вася') // не работает По тексту видно, что сама функция upper вызывается, компилятор не подавляет ее вызов, и она должна отработать, и отработала у меня правильно. В чем дело - мне непонятно, я вот 20 минут назад как собрал xHarbour и прогнал тест. cStr := 'Вася' ? Upper(cStr) работает ?

Dima: Pasha пишет: cStr := 'Вася' ? Upper(cStr) работает ? Это и работало.

Pasha: AndreyZh пишет: Господа, а можно мне на почту zhsoft@mail.ru прислать необходимые файлы, что бы не связываться со "сборками", а то жалко бросать начатые эксперимент? Полная сборка xHarbour вместе с сырцами с CVS получается около 20М. Как отправить ?

AndreyZh: Как быстро идёт обмен мнениями!!? Я не очень понял, где возникает ошибка. Здесь переменная oTb создается оператором Private 2-й раз, после того как она была создана неявно операцией присваивания ? Код, вызывающий ошибку: PROC pReceipts() LOCA sOp:="0200", cOldCol:=SetColor(), nKeys:=0, nCount:=0, aArr:={} S_PROC ..................................... oTB := TBRowseDB(7,1,23,78) oTB:headSep := Chr(196) ..................................... PRIV oTb // Глупо, но объявляю после инициализации .................................... DO WHIL TRUE #include "table.ch" **** Место вылета по ошибке - там ерунда типа oTb:stabilize() и т.п. DO CASE CASE nKeys == K_INS; IF lAddChInv( TRUE) THEN REF_INV // REC .............................. Извините за повторение просьбы! а можно мне на почту zhsoft@mail.ru прислать необходимые файлы, что бы не связываться со "сборками", а то жалко бросать начатые эксперимент?

AndreyZh: Полная сборка xHarbour вместе с сырцами с CVS получается около 20М. Как отправить ? Мне только файлы (вероятно только компилятор и библиотеку), где произошли изменения, но если не сложно/возможно, то и 20mb сойдёт.

Pasha: AndreyZh пишет: Мне только файлы (вероятно только компилятор и библиотеку), где произошли изменения, но если не сложно/возможно, то и 20mb сойдёт. Если только lib, include и bin, то обьем получается небольшой Но и сырцы ведь тоже нужны, а за год изменений было очень много.

Dima: Странно все это Павел. У тебя работает , у меня нет function Main() REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) ? Upper('Вася') // BAD ? Upper('test') // OK wait return nil

Pasha: AndreyZh пишет: PRIV oTb // Глупо, но объявляю после инициализации Понятно. Харбор так и работает aa := 'Hello' ? aa // результат - Hello Private aa ? aa // результат - nil То есть, если создаваемая private - переменная уже существует, то харбор очищает ее значение. Если в клиппере не так - то это несовместимость с клиппером

AndreyZh: Но и сырцы ведь тоже нужны, а за год изменений было очень много Если "сырцы" - исходный код, то мне он ПОКА не нужен!

Петр: У меня работает xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6633) Copyright 1999-2010, http://www.xharbour.org http://www.harbour-project.org/ Стандартная сборка, скачанная с free.xHarbour.com

Pasha: Dima пишет: Странно все это Павел. У тебя работает , у меня нет function Main() REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) ? Upper('Вася') // BAD ? Upper('test') // OK wait return nil Да мне самому непонятно. Вызов функции есть, и у меня она отработала, как и должно быть Пусть кто-нибудь третий прогонит этот тестик, на любом xHarbour после апреля 2009 года

Pasha: AndreyZh пишет: Если "сырцы" - исходный код, то мне он ПОКА не нужен! Ага, здесь есть сборка, качайте: http://free.xharbour.com/free.xHarbour.com/Downloads.html

Петр: Pasha пишет: Понятно. Харбор так и работает aa := 'Hello' ? aa // результат - Hello Private aa ? aa // результат - nil То есть, если создаваемая private - переменная уже существует, то харбор очищает ее значение. Так работает xHarbour, в Harbour все OK



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