[ОТВЕТИТЬ]
25.07.2014 11:30
AndreyZh
 
В данной теме, по мере возможности или нахождения интересно представленного материала буду размещать статьи по системам разработки "УС Лэнд" и снятой с поддержки "КИС Lack"... может быть тогда "опоненты" смогут относится к данным системам более объективно?

Начну со статьи Александра Кресина на харбе (статью сократил, убрав примеры программ). А.Кресин - один из Российских гуру (раньше на Клиппер, теперь на Harbour), "стартовый" разработчик open source инструментов на (x)Harbour весьма популярных в России, Украине (в основном из регионов затронутых войной), Польше и латиноамериканских странах, таких как: графический инструмент hwGUI и SQL СУБД, базирующаяся на "родных" файлах стандарта dBase - LetoDB... сейчас данные "инструменты" развиваются "своими" международными сообществами. И так - статья:



Harbour — новое лицо xBase family


(КИС Lack...) Для справки: xBase — семейство систем программирования, СУБД, берущих начало с dBase (1980 г.). Их объединяет общий язык программирования ( естественно, с вариациями, присущими конкретной реализации ) и встроенные в этот язык средства доступа к реляционным базам данных формата DBF. Собственно, dBase начинался как СУБД с языком, предназначеннным для обслуживания баз данных. Это процедурный язык программирования, он относится к группе интерпретируемых языков и обладает многими, если не всеми, их родовыми чертами, такими, например, как динамическая типизация.

Clipper, непосредственный предшественник Harbour, был создан в 1985 г. с целью повышения производительности dBase III. Для этого исходный код программы преобразовывался на стадии компиляции в байт-код, который встраивался в исполнямый файл вместе с виртуальной машиной, предназначенной для исполнения этого байт-кода. Таким образом, Clipper давал на выходе автономный exe файл, не требующий для своего запуска и выполнения внешнего интерпретатора, как в случае dBase или FoxBase ( другой популярный xBase продукт ).

В конце 80-х и начале 90-х Clipper был очень популярен, он был одним из основных средств программирования для приложений, связанных с использованием баз данных, в первую очередь бухгалтерских, управленческих, банковских. Язык модернизировался от версии к версии, добавлялись новые подсистемы. Среди последних особенно следует отметить Extend System и RDD. Extend System (система расширения) предназначена для связи с модулями, написанными на С — вызов функций, передача параметров, получение возвращаемых значений. RDD — Replaceable Database Drivers (заменяемые драйверы баз данных) — технология, которая позволяла, прилинковав взамен стандартной другую, специальную библиотеку, работать с БД другого типа, не изменив ни строчки кода. Именно так Clipper-приложения работали, например, с Novell'овским Btrieve (если кто помнит, была такая клиент-серверная не SQL СУБД).

XBase системы всегда воспринимались как предназначенные, в первую очередь, для работы с базами данных и, возможно поэтому, с ростом популярности SQL стали выходить из тренда. И если с Fox'ом все было более-менее благополучно — купившая его Microsoft сделала на его основе популярный продукт Visual Foxpro, который еще несколько лет назад (в 2006, согласно Википедии), был на почетном 12-м месте в списке TIOBE, то у Clipper дела были куда хуже. Computer Associates, которая владела им с начала 90-х, сделала ставку на другие продукты. Clipper же остался в стороне от магистрального пути, назревшие проблемы не решались, а в 1997 году Computer Associates объявила о закрытии дальнейшей его разработки, оставив пишущих на нем программистов наедине с 16-разрядной, рассчитанной на применение в среде MS-DOS системой программирования.


(УС Лэнд...) Многие из тех, кто задумывался о своем будущем, мигрировали на другие платформы, но остались и те, кто считал, что достоинства Clipper, будучи реализованы в современной среде программирования, будут востребованы и дальше. Были созданы несколько таких реализаций (xBase++, Clip, Harbour), об одной из которых, наиболее успешной на этот день я и поведу речь — прошу простить меня за такое длинное, но, на мой взгляд, необходимое вступление.

Итак, Harbour. Проект стартовал в 1999 году, официальный сайт — http://www.harbour-project.org. Текущая версия — 3.0 (stable), 3.2 (development).

Как и Clipper, Harbour транслирует исходный текст программы в байт-код, но, в отличие от своего предшественника, компилятор Harbour создает не объектные, а с файлы, которые потом надо «скормить» С компилятору...

Я не случайно уделил столько внимания С в Harbour. Расширенная ( извините за невольную тавтологию ), по сравнению с Clipper, Extend System и Item API, предоставляющая доступ из С кода к внутренним структурам Harbour, его переменным, массивам, объектам позволяют говорить о симбиозе двух языков, я считаю это одной из важнейших особенностей Harbour. Благодаря этому Harbour уже «оброс» большим количеством модулей — оболочек к разнообразным продуктам, имеющим C API и список таких модулей, как open source, так и коммерческих, постоянно растет (в настоящее время подумываю об OpenCV). Конечно же, С используется в Harbour не только для создания оболочек к готовым продуктам, но и для самостоятельных разработок — новые RDD, GUI библиотеки и др. Иногда, в контексте некоторых приложений я рассматриваю Harbour как оболочку к С коду — для облегчения реализации пользовательского интерфейса, доступа к БД и пр.

Встроенный доступ к БД, эта родовая черта xBase, — еще одна тема, которой хочется уделить особое внимание. Это, действительно, очень удобно — иметь возможность, не используя внешние СУБД, с помощью только встроенных языковых средств производить все необходимые манипуляции с базами данных — создание, модификация, пополнение, редактирование, поиск. В случае, когда количество информации, хранящейся в БД, сравнительно невелико, использовать внешнюю СУБД представляется совершенно излишним, для таких приложений и MySQL выглядит монстром (а ведь некоторые даже MS SQL ставят) — xBase подход здесь выглядит наиболее адекватным решением. Впрочем, и для больших БД Harbour может применяться (и применяется) вполне успешно.

Приведу небольшой фрагмент кода, демонстрирующий типичные конструкции доступа к данным — для тех, кто не сталкивался с xBase языками раньше. Конечно же, арсенал средств для работы с БД в Harbour гораздо богаче, чем использованный в этих нескольких строчках....

Средства доступа к БД не ограничиваются стандартными. Есть RDD, написанные для клиент-серверных СУБД, как основанных на DBF ( коммерческая Advantage Database Server от Sybase и open source LetoDb ), та и SQL. Есть модули, обеспечивающие доступ посредством ODBC и ADO, есть модули для MySQL, PostgreSQL, SQLite, использующие C API этих СУБД.

В Harbour получили дальнейшее развитие все особенности Clipper, сделавшие его языком высокого уровня, на котором удобно программировать — автоматическое выделение и освобождение памяти, сборщик мусора, так называемые raw arrays, возможность компилировать и исполнять в run-time, в динамике фрагменты кода. Добавлена полноценная реализация ООП. Препроцессор, сохранив всю мощь Clipper'овского, расширен за счет некоторых конструкций, взятых из С. Впрочем, не буду перечислять здесь все новшества, а просто сошлюсь на раздел моего сайта "Harbour для начинающих".

Да, я, кажется, забыл сказать, что Harbour — кроссплатформенная система с открытыми исходниками. Он существует на 32- и 64-разрядных платформах, на Windows, Linux, Unix, Mac OS X, QNX, OS/2, вроде бы и на Android, и еще на чем-то, чего я не видел.


-----------------------------------------------

P.S. Универсальная учетная система "УС Лэнд" разрабатывается пока не на Harbour, а xHarbour... xHarbour - open source ответвление развиваемое, как часть коммерческого продукта единственной фирмой разработчиком, что мне кажется более надежной, чем разработка Harbour "шалманом" программистов разных стран. Во вторых на момент перевода УС на новый инструментарий у xHarbour была большая совместимось со "старой" системой разработки.

"На сейчас" Harbour стал более надежной, гибкой и быстрой системой, чем xharbour. Для него создано гораздо больше библиотек расширяющих его возможности, включая доступы к "облаку", ГУИ, СУБД, гаджетам. При этом сейчас уже инструмент УС Лэнд 100% совместим с Harbour, т.е. возможна смена мной инструментария.
25.07.2014 13:18
OlegON
 
А есть ли модуль для подключения к Oracle? Не гуглится просто так :(
25.07.2014 14:08
AndreyZh
 
Цитата:
OlegON А есть ли модуль для подключения к Oracle? Не гуглится просто так :(
Ссылка на сайт производителя RDD, в т.ч. для Oracle (вроде разрешено): - это для Harbour и xHarbour

Для xHarbour (инструмент УС Лэнд) http://www.xharbour.com/products/sqlrdd.php есть редакция коммерческой обёртки, где "SQLRDD was created to access SQL database servers like Oracle, Microsoft SQL Server, IBM DB/2, Postgres, Sybase, MySQL, Firebird and others, from xHarbour xBase language just like you are used to use DBFCDX or any other regular xBase database driver", т.е. драйвера к СУБД (частности Oracle) вшиты в поставку.

Замечу, что технология RDD - это не ODBC... вызовы запросов преобразуются в прямые вызовы программ на C, т.е. система работает со скоростью "родных" библиотек под C.
25.07.2014 18:45
FinSoft
 
Привет.
Я предпочел расширить арсенал инструментов.
Базовый функционал учетной системы работает на десктопах и остается на clarion. Единственное, что планируется, подтянуть бюджетный терминальный сервер tsplus, так как система заточена для работы в терминальном режиме со встроенной базой данных. Tsplus позволяет организовывать удаленный доступ к приложению с любых устройств, включая мобильные, благодаря html5 клиенту. В локальной сети ставится за 5-10 минут. По отзывам зарубежных коллег, работает весьма достойно. При стоимости порядка тысячи рублей за рабочее место и возможности использования под сервер настольной оси win7 или winxp.
Для web я стал использовать популярную связку html/css/php/javascript. Основная нагрузка приходится на php. Пишется все в notepad++. На этой связке работает web-магазин, полностью интегрированный с основной учетной системой.
Для мобильных устройств я остановился на андроиде, как самой распространенной платформе с массой дешевых девайсов. Есть ряд мобильных задач, прежде всего мобильная торговля, когда нужна локальная работа с периодической синхронизацией данных через интернет. Для разработки была взята система basic4android, которая имеет низкий порог вхождения (за небольшую плату) и позволяет быстро разрабатывать необходимый функционал, не погружаясь в дебри джавы. Как раз сейчас начали обкатывать в боевом режиме первое решение. Об этой системе я узнал от зарубежных коллег. Могу подтвердить ее эффективность.
28.07.2014 12:07
AndreyZh
 
Доброго дня Вячеслав

Имеет место быть некоторому непониманию... В начале по мне: я не админ, хотя больший доход от этой работы, я не чистый программист-эрудит, хотя и развиваю (поддерживаю) программную довольно большую систему, я не экономист (бухгалтер), хотя приходится быть в курсе законотворчества и так далее... Есть несколько направлений, в которых ориентируюсь, но если встречаются "сопутствующие" задачи стараюсь передать их специалистам в их решении, "интегрируясь" с ними.

В свете этой ремарки нужно будет и воспринимать ответы:

Цитата:
FinSoft Привет. Я предпочел расширить арсенал инструментов.
Боюсь, что Вы невнимательно прочитали статью А.Кресина и не увидели одно из основных примечаний по Harbour, а именно (x)Harbour == ANSII C, т.е. база на которой строятся все программные системы, в частности Ваша система разработки.

Как и в случае С для Harbour "на общественных началах" разрабатываются многочисленные библиотеки под любые ОС и они, как правило пишутся на C or Harbour. То есть для всего перечисленного Вами есть созданные (с толь или иной степенью проработки) инструментальные расширения.

Цитата:
FinSoft Базовый функционал учетной системы работает на десктопах и остается на clarion. Единственное, что планируется, подтянуть бюджетный терминальный сервер tsplus, так как система заточена для работы в терминальном режиме со встроенной базой данных. Tsplus позволяет организовывать удаленный доступ к приложению с любых устройств, включая мобильные, благодаря html5 клиенту. В локальной сети ставится за 5-10 минут. По отзывам зарубежных коллег, работает весьма достойно. При стоимости порядка тысячи рублей за рабочее место и возможности использования под сервер настольной оси win7 или winxp.
За "наколку" - tsplus спасибо, правда не для пользователей УС, а мученникам от "1С" - есть пара фирм, где ф-с архитектура еле дышит, а на "честные" терминалы нет денег.

Что Harbour: есть в доступе open source библиотеки, которые позволяют реализовывать терминальные режимы без стороннего п/о, есть библиотеки (в стандарте уже довольно развитые), позволяющие реализовывать связку "клиент - интернет - web сервер" и многое другое... Вопрос лишь "а оно мне надо?"... хотя, если потребуется - придется вникать!

Цитата:
FinSoft Для web я стал использовать популярную связку 1(html/css)/2()php/(3)javascript. Основная нагрузка приходится на php. Пишется все в notepad++. На этой связке работает web-магазин, полностью интегрированный с основной учетной системой.
Что Вы предлагаете? Наряду со знаниями основной моей платформы разработки, которой хорошо владею максимум на 20% ещё изучить и в совершенстве "пользовать" три столь же сложные платформы, по которым написаны тысячастраничные пособия (и даже по каждой из которых не встречать профессионалов (в Саратове), а они были нужны для решения серьёзных и дорогих задач... "трепло" быстро определялось)

Цитата:
FinSoft Для мобильных устройств я остановился на андроиде, как самой распространенной платформе с массой дешевых девайсов. Есть ряд мобильных задач, прежде всего мобильная торговля, когда нужна локальная работа с периодической синхронизацией данных через интернет. Для разработки была взята система basic4android, которая имеет низкий порог вхождения (за небольшую плату) и позволяет быстро разрабатывать необходимый функционал, не погружаясь в дебри джавы. Как раз сейчас начали обкатывать в боевом режиме первое решение. Об этой системе я узнал от зарубежных коллег. Могу подтвердить ее эффективность.
Harbour позволяет создавать "родные" приложения для андроид, правда пока "через опу" и когда будет желание размещу статью на эту тему... но и это пока находится вне моих интересов

А что "интересно" и беспокоит в "сей момент"? Например, как реализовать очередной дибилизм от ФСРАР по журналу учета - когда эти ... опубликовали очередную шараду (приказ), а как её разгадывать не удосужились подсказать... и приходится часами искать полезную инфу по этой теме
28.07.2014 13:50
FinSoft
 
Андрей, я просто для поддержания разговора про инструментальные средства. Если, конечно, ты не против.
Мир меняется и все больше и больше восстребованными становятся решения для веба и мобильных устройств. Тут надо отметить, что задачи в этой области являются решениями-карликами по сравнению с настольными учетными системами. То есть их функционал узок и заточен для решения какой-то небольшой задачи. К примеру, приложение с 20 диалоговыми окошками для андроида считается уже довольно серьезным. Что лучше, накрыть эти направления своими решениями или интегрироваться с другими разработчиками, вопрос не однозначный. Для своих пользователей я решил, что более оптимально иметь веб-магазин и мобильную торговлю из одной коробки с учетной системой. Для меня расширяются технические возможности и в целом взгляд на информационную систему, появляются новые мысли и идеи, в проект привлекается дополнительное финансирование. К слову, время вхождения в программирование для андроида составило где-то одну неделю, для веба порядка месяца. Это трудное время, связанное со стрессом при погружении в новые технологии, но постепенно все укладывается в голове. А опыт разработки учетных систем начинает коррелировать с этими платформами, давая определенные конкурентные преимущества.
28.07.2014 15:43
FinSoft
 
Сходил по ссылке на сайт harbour, последние новости по проекту - лето 2011 года. Наводит на грустные мысли...
28.07.2014 16:21
AndreyZh
 
Цитата:
FinSoft Андрей, я просто для поддержания разговора про инструментальные средства. Если, конечно, ты не против.
Конечно не против... но, так имеет место быть, что данный раздел предназначен для пользователей (в том числе возможно будующих) универсальной учетки "УС Лэнд", как следствие здесь приводится техническая информация по возможностям системы, механизмам продвижения и внедрения системы и изредка размещается инфа по темам "широкого профиля", отражающим точку мою (личную и возможно ошибочную) точку зрения.

Для чего конкретно эта тема? Очень понравилась (имел возможность неединожды убедиться) теория "рынка лимонов" Маркетинг, пиар, реклама! - Делюсь опытом , где мы, как разработчики реально существуем и выживаем. Из этой теории в частности следует, что если заказчик будет больше знать о товаре, то он сможет сделать более правильный выбор. Посему попытался и буду пытаться здесь размещать материалы, в которых простым языком описывается "внутренняя кухня" системы УС Land.

Боюсь, что программисты и разработчики редко хаживают в данный раздел, ну может быть генеральный модератор... то есть тема может оказаться лишь диалогом двух программистов мало интересным основным посетителям раздела.

Цитата:
FinSoft Мир меняется и все больше и больше восстребованными становятся решения для веба и мобильных устройств.
Вполне возможно? Но в личной переписке и здесь неоднократно отмечал, что разуверился в ...

Почему и в чём? Очень объемный и сложный вопрос... Если конкретно, например в 2007 "интегрировался" в систему мобильной торговли: Palm -> Pocket PC -> Chrome OS -> Android -> OS iPhone с того момента хорошая знакомая (торговик), всего в двух фирмах освоила системы интеграции. Для каждой из этих систем свой инструментарий, на выбор платформы влияют мода и тренды. На Российском рынке уже несколько десятков систем для гаджетов... Вы "предлагаете" вступить в бизнес соревнования и на этом рынке?

Уже "проходил" - расширение сферы деятельности, области приложения труда ("мозгов") ведет к деградации в каждой отдельной сфере, а ещё необходимо учитывать, что "поджимают" маркетологи и "менеджеры" альтернативных систем, т.е. "исскуством продаж" необходимо владеть, как минимум... Не до жиру - быть бы живым!

Цитата:
FinSoft Тут надо отметить, что задачи в этой области являются решениями-карликами по сравнению с настольными учетными системами. То есть их функционал узок и заточен для решения какой-то небольшой задачи. К примеру, приложение с 20 диалоговыми окошками для андроида считается уже довольно серьезным.
Боюсь - это устаревшие сведения? Как и во всём в ИТ сфере:

1. Появляется принципиально новый продукт с ограниченным функционалом;
2. Он вырастает по достаточно хорошего до бизнеса функционала;
3. Появляется множество конкурентов;
4. Начинается война "плюшек" и маркетинговых преимуществ;
5. Продукты со слабым рекламным потенциалом уходят с рынка, освобождая места маркетингово успешным проектам... Сейчас уже 4 этап! - паровоз ушел...

Цитата:
FinSoft Что лучше, накрыть эти направления своими решениями или интегрироваться с другими разработчиками, вопрос не однозначный.
Для меня "маленького" и "слабого" лучше ИНТЕГРАЦИЯ:

1. Это много легче и проще, чем создавать очередной "лисапед";
2. Пользователь выбирает более "удобный" ему продукт и "я" не диктую ему выбор;
3. УС Land цепляется "вагончиком" к успешным маркетинговым проектам, а не пытается продавить рынок;
4. Это (интеграция) "уникальное" получается приложение, оплачиваемой и как следствие "финансирует" развитие проекта open source "для всех"...
28.07.2014 16:28
AndreyZh
 
Цитата:
FinSoft Сходил по ссылке на сайт harbour, последние новости по проекту - лето 2011 года. Наводит на грустные мысли...
Не там искали! Являясь open source проектом - поддерживается "открытой" командой разработчиков действия которой координируются "парой человек" и вся работа по развитию идет в "гетто" (открытом для команды репрозитарии). Релизы Harbour и наборов библиотек выпускаются пару раз в месяц, стабильные версии примерно раз в квартал (для xHarbour раз в полгода).

Не вхожу в команду разработчиков и необходимые новшества получаю с форума российско-украинских пользователей (x) Harbour (по мере необходимости)
28.07.2014 17:03
FinSoft
 
Цитата:
AndreyZh Для меня "маленького" и "слабого" лучше ИНТЕГРАЦИЯ:

1. Это много легче и проще, чем создавать очередной "лисапед";
2. Пользователь выбирает более "удобный" ему продукт и "я" не диктую ему выбор;
3. УС Land цепляется "вагончиком" к успешным маркетинговым проектам, а не пытается продавить рынок;
4. Это (интеграция) "уникальное" получается приложение, оплачиваемой и как следствие "финансирует" развитие проекта open source "для всех"...
Развитие своих веб и мобильной подсистем имеет смысл, конечно, только в связке с основным продуктом. Конечно, нет смысла пробовать конкурировать с имеющимися универсальными решениями. А вот для пользователей конкретной учетной системы такие расширения из коробки позволяют экономить немало денег и нервов. Самое главное, один раз настроил и все довольны - пользователи спокойно работают без лишних телодвижений, разработчик контролирует систему и получает некое материальное вознаграждение. Там не критичны изменения в законодательстве, небольшие программки, которыми пользуется большое количество людей. А "смежники" не напрягают попытками перетянуть одеяло на себя. Ну я просто высказываю по своему опыту.
29.07.2014 12:32
AndreyZh
 
Цитата:
FinSoft Развитие своих веб и мобильной подсистем имеет смысл, конечно, только в связке с основным продуктом. Конечно, нет смысла пробовать конкурировать с имеющимися универсальными решениями. А вот для пользователей конкретной учетной системы такие расширения из коробки позволяют экономить немало денег и нервов. Самое главное, один раз настроил и все довольны - пользователи спокойно работают без лишних телодвижений, разработчик контролирует систему и получает некое материальное вознаграждение. Там не критичны изменения в законодательстве, небольшие программки, которыми пользуется большое количество людей. А "смежники" не напрягают попытками перетянуть одеяло на себя. Ну я просто высказываю по своему опыту.
В принципе я периода 1990 - 2009 года с Вами полностью согласен, но сейчас объем накопленного негативного опыта не даёт соглашаться с данными идеями.

Сейчас "неокученный" программами пользователь требует: простоты установки и пользования, "стандартный" и модный интерфейс, наличие раскрученного бренда, минимальные затраты на владение... те, кто давно автоматизирован и вложил в это немало средств и времени конечно, как и мы считает данный набор требований наивными мечтами.

Как следствие Вы думаете о ПРОГРАММЕ, а я о её ПРОДВИЖЕНИИ. Занимаясь в основном мелким бизнесом, который раскусил маркетинговое враньё от ЗАО "1С" или вообще не автоматизирован пришел к выводу: или нужна модульная система, где пользователь подбирает для себя необходимый набор функциональных блоков (это годится только для платных программ), или нужна примитивная, легкая для освоения программа выполняющая минимально необходимый набор функций и расширяемая по мере необходимости.

В свете этого "понимания" и развиваю систему "УС Лэнд" (так же демонстрирую возможности доработки внешними специалистами): пытаюсь минимизировать функционал, удаляя "лишнее" и делая более дружественный интерфейс, а специализированные решения выводя за "рамки" системы, в том числе "отдавая" их разработку другим программистам.
29.07.2014 13:42
FinSoft
 
Андрей, я в данном случае думаю о том, как усилить позиции на рынке действующих пользователей учетной системы и о том, как укрепить связи с ними. При большой конкуренции важно в первую очередь максимально защитить свою территорию. В общем, тебе виднее, как действовать в твоей ситуации. Обмен мнениями полезен в любом случае.
29.07.2014 13:54
AndreyZh
 
Цитата:
FinSoft Обмен мнениями полезен в любом случае.
12.08.2014 14:28
AndreyZh
 
К сожалению на Харборе сложно найти автора статьи и посему не могу указать его. Мне эта тема (создание приложений для мобильных устройств) пока малоинтересна, но демонстрирует гибкость и универсальность используемого инструмента разработки программ (x) Harbour...

В посте «Harbour — новое лицо xBase family» Александр Кресин рассказал, что такое Harbour.... Первое сообщение темы Проект QtContribs — это расширение Harbour для использования Qt.

Т.е. все, кто знаком с dbase-языками программирования (foxpro, clipper и др.) смогут, используя QtContribs, писать кроссплатформенные приложения с хорошим графическим интерфейсом (конечно изучив «философию» Qt), да и вообще использовать всю мощь Qt.

Учитывая изложенное в посте «Разработка Qt-приложения с доступом к MySQL под Android», возможности для разработки под Android + mySQL также существуют.

Но главный разработчик библиотеки QtContribs (Pritpal Bedi) консервативен и не развивает ту часть, которая связана с QtSql. Я посчитал это неправильным и немного поучаствовал в развитии этого направления.

(Исправлено) Сегодня(25.07.2014) главный разработчик QtContribs Pritpal Bedi, посмотрев мою работу, выложил новые биндинги для QtSql и сказал что будет развивать это направление. форум QtContribs Это здорово.

Далее покажу пример использования QSqlTableModel и QTableView. Итак, в поставке Qt есть много примеров и среди них приложение sqlbrowser. Я взял из него файл browserwidget.ui — это окошко приложения, сделанное в qt-designer, и немного его исправил.

Подготовил проект. Для связи объектов Harbour и Qt сделаны файлы с раширением qth — из них генерятся cpp-файлы (биндиги или проще связки). Два файла qth я вложил в архив проекта. Весь проект для Linux лежит здесь: форум QtContribs. Сделал основную программу на Harbour:

Код:
#include "hbqtgui.ch"
#include "hbqtsql.ch"

STATIC s_db, s_oBrowser

PROC main()
   LOCAL oMainWindow, oELoop, lExit := .F.//, oApp
   LOCAL oStrModel, oStrList//, db
   CLS
   
   hb_cdpSelect( "UTF8EX" )//Основная кодовая страница приложения

   oMainWindow := QMainWindow()
   oMainWindow:setAttribute( Qt_WA_DeleteOnClose, .F. )

   oMainWindow:setWindowTitle("Qt SQL Browser")
   s_oBrowser = hbqtui_browserwidget(oMainWindow)
   
   oMainWindow:setCentralWidget(s_oBrowser:oWidget)
   
   oMainWindow:connect( QEvent_Close   , {|| lExit := .T. } )
  
   s_db = QSqlDatabase():addDatabase("QMYSQL")
   s_db:setHostName("localhost")
   s_db:setDatabaseName("test")
   
   IF .NOT. s_db:open()
      ?"Not Connected!"
      RETURN
   ENDIF

   oStrList :=s_db:tables()
   oStrModel := QStringListModel( oStrList, s_oBrowser:listView )
   s_oBrowser:listView:setModel( oStrModel )
   s_oBrowser:listView:connect( "clicked(QModelIndex)", { |d| showTable(d) } )

   oMainWindow:show()

   oELoop := QEventLoop( oMainWindow )
   DO WHILE .t.
      oELoop:processEvents()
      IF lExit
         EXIT
      ENDIF
   ENDDO
   oELoop:exit( 0 )
   
   RETURN
   
PROCEDURE showTable(d)
   LOCAL cTName
   LOCAL model
   cTName := s_oBrowser:listView:model():data(d, 0):ToString()
   cTName := s_db:driver:escapeIdentifier(cTName, 1/*QSqlDriver():IdentifierType:TableName*/)

    model := QSqlTableModel(s_oBrowser:table, s_db)
    model:setTable(cTName)
    if (model:lastError():type() != 0)
       ?model:lastError():text()
    endif
    model:select()
    if (model:lastError():type() != 0)
       ??model:lastError():text()
    endif
    s_oBrowser:table:setModel(model)
//    s_oBrowser:table:setEditTriggers(QAbstractItemView_DoubleClicked+QAbstractItemView_EditKeyPressed)
   RETURN

Получилось вот что: ... рисунок пропущен Вот и все, казалось бы. Но чтобы это заработало, нужен драйвер qtmysql — его компиляция — это системный вопрос, там же на форуме я кратко описал, как это сделать.

Тем, кто заинтересовался, предлагаю посмотреть туториал разработки простых QtContribs-приложений:

Приглашаю всех обладающих свободным временем и желающих разбираться в Си, Си++ и других языках к развитию проекта. В ближайших планах сообщества интеграция отладчика в Harbour IDE (сокращенно HbIDE).
12.08.2014 17:38
AndreyZh
 
Существенно большую популярность, чем Clipper и соответственно его "наследник" (x)Harbour на просторах России завоевал (Visual) FoxPro... замечу, что данная система полностью снимается с поддержки её владельцем Microsoft в 2015 году.

Как и все системы разработки группы xBase фокс очень сильно отличается по командам и функциям от Clipper/Harbour (знаю, т.к. программы CST/XBM входящие в УС Лэнд написаны на нем), но... и это иллюстрирует мощь заложенных в Харбор концепций стандарт языка FoxPro элементарно и "компактно" реализуется системой препроцессора языка (x)Harbour. Приведу пример реализации ВСЕХ уникальных команд FoxPro на Harbour (там же ссылка на автора библиотеки):

Код:
/*
File:		hbfoxlib.ch 
Version:	    1.1
Author:		Alex Antypenko
Description:	Foxpro command for (x)Harbour
Notes:		This is the header file for library that contains the implementation FoxPro commands and functions.
*/



#ifndef _HBFOXLIB_DEFINED
#define _HBFOXLIB_DEFINED


#xtranslate AND => .and.
#xtranslate OR  => .or.


#command DIMENSIONS <!name1!>( <dim1,...> ) [, <!nameN!>( <dimN,...> ) ] => ;
         PRIVATE <name1>\[ <dim1> \] [, <nameN>\[ <dimN> \] ]



/* commands using FIELDS clause which is not accepted by Clipper */
#command DISPLAY [FIELDS <v,...>] [<off:OFF>] ;
                 [<prn:TO PRINTER>] [TO FILE <(f)>] ;
                 [FOR <for>] [WHILE <while>] [NEXT <next>] ;
                 [RECORD <rec>] [<rest:REST>] [<all:ALL>] => ;
                 __dbList( <.off.>, { <{v}> }, <.all.>, ;
                   <{for}>, <{while}>, <next>, ;
                   <rec>, <.rest.>, <.prn.>, <(f)> )


#command SCATTER FIELDS <f1> [,<fn>]    ;
		 [<mm: MEMO>]           ;
		 [TO] MEMVAR         => ;
		 [ PRIVATE <f1>:=iif(!<.mm.> .and. fieldtype(fieldpos(<"f1">))=="M","", field-><f1>)];
		 [;PRIVATE <fn>:=iif(!<.mm.> .and. fieldtype(fieldpos(<"fn">))=="M","", field-><fn>)]


#command SCATTER FIELDS <f1> [,<fn>]    ;
		 [MEMO]                 ;
		 [TO] MEMVAR BLANK   => ;
         	 [PRIVATE <f1>:=fox_fieldBlank(fieldpos(<"f1">))];
		 [;PRIVATE <fn>:=fox_fieldBlank(fieldpos(<"fn">))]

#command SCATTER [TO] MEMVAR ;
		[<mm: MEMO>]            ;
		[<bb: BLANK>]       =>  ;
                ;PRIVATE ___i,___m  ;
		;FOR ___i:=1 to FCount() 			;
		;	 ___m:=FieldName(___i)        		;
		;        PRIVATE &___m                   	;
		;	IIF(<.bb.>,__mvPut(___m,fox_fieldBlank(___i)),IIF(!<.mm.> .and. FieldType(___i)=="M",__mvPut(___m,""),__mvPut(___m,fieldGet(___i)) ));
		;NEXT 
		    				
		

#command SCATTER TO <arr>;
		[<mm: MEMO>]            ;
		[<bb: BLANK>]       =>  ;
		<arr>:={} 		;	
                ;PRIVATE ___ch;
		;FOR ___ch:=1 TO FCount() ;
		;  IIF(<.bb.>, AAdd(<arr>,fox_fieldBlank(___ch)),IIF(!<.mm.> .and. FieldType(___ch)=="M",AAdd(<arr>,""),AADD(<arr>,FieldGet(___ch))));	
		;NEXT						


#command GATHER MEMVAR FIELDS <f1> [,<fn>]    ;
		 [MEMO]              => ;
		 [field-><f1>:=&("m->"+<"f1">)];
		 [;field-><fn>:=&("m->"+<"fn">)]


#command GATHER MEMVAR ;
		[<mm: MEMO>]        =>  ;
                ;PRIVATE ___lch,___m_f                  ;
		;FOR ___lch:=1 TO FCount() 		;
  		;  ___m_f:="m->"+FieldName(___lch)      ;
		;  IIF(Type(___m_f)!="U",IIF(<.mm.> .or. FieldType(___lch)!="M",FieldPut(___lch,&___m_f)),);
		;NEXT

#command GATHER FROM <arr> ;
		[<mm: MEMO>]        =>  ;
                ;PRIVATE ___lch1                  ;
		;FOR ___lch1:=1 TO Len(<arr>)	 ;
		; IIF(<.mm.> .or. FieldType(___lch1)!="M",FieldPut(___lch1,<arr>\[___lch1\]),);	
		;NEXT						

#command SCAN 								;
	 [FOR <for>]                                                    ;
	 [WHILE <while>]                                                ;
	 [NEXT <next>]                                                  ;
	 [RECORD <rec>]                                                 ;
	 [<rest:REST>]                                                  ;
	 [<all:ALL>]                                                    ;
	 [<nooptimize:NOOPTIMIZE>]                                      ;
	 =>								;
	 ;PRIVATE lExit:=.F.					;
	 ;fox_ScanBegin( <"for"> , <{for}>, <{while}>, 			;
	 		<next>, <rec>, <.rest.>, <.nooptimize.>)	;
	 ; WHILE !EOF().AND.!lExit 				;
	 ;  IIF(!fox_ScanNext(),lExit:=.T.,)		

#command ENDSCAN => ;
	 ; END ;
	 ;fox_ScanEnd()


#command _USE <(db)>                                                     ;
	     [VIA <rdd>]                                                ;
	     [IN  <in>]                                                 ;
	     [ALIAS <alias>]                                                ;
	     [<new: NEW>]                                               ;
	     [<ex: EXCLUSIVE>]                                          ;
	     [<sh: SHARED>]                                             ;
	     [<ro: READONLY>]                                           ;
	     [ASCENDING]                                                ;
	     [<desc: DESCENDING>]                                       ;
	     [<noUpdate: NOUPDATE>]                                     ;
         [CODEPAGE <codepage>]                                      ;
	     [INDEX <ilist,...>]                                        ;
	     [ORDER  <(xOrder)>]                                        ;
	     [TAG    <cTag>]                                            ;
	     [OF     <xOf>]                                             ;
	     =>;
	     fox_useArea(<(db)>,<(alias)>,<rdd>,<in>,NIL , 			;
			<.new.>,iif(<.sh.> .or. <.ex.>, !<.ex.>, NIL),	;
			<.ro.>, <.noUpdate.>, <.desc.>,  		;
			{ <(ilist)> },<(xOrder)>,<"cTag">,<"xOf">,<codepage>)

// mini SQL commands

#command CREATE TABLE <(filename)> ;
		FROM [ARRAY] <arr> ;
		[VIA <ddriver>]    ;
		=> ;
		dbcreate(<(filename)>,<arr>,<ddriver>)

#command CREATE DBF <(filename)>   ;
		FROM [ARRAY] <arr> ;
		[VIA <ddriver>]    ;
		=> ;
		dbcreate(<(filename)>,<arr>,<ddriver>)

#command CREATE TABLE <(filename)> <(fields_data)>	;
		[VIA <ddriver>]   ;
		=> ;
	      fox_CreateTable(<(filename)>,<"fields_data">,<ddriver>)

#command INSERT INTO <(filename)> <(fields_data)> ;
		VALUES <valData> ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)> , <"fields_data">,<"valData">,<ddriver>)

#command INSERT INTO <(filename)>  ;
		VALUES <valData> ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)> , "", <"valData">,<ddriver>)

#command INSERT INTO <(filename)> <(data)>  ;
	     FROM ARRAY <valData>  ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)>, <(data)>,<valData>,<ddriver>)

#command INSERT INTO <(filename)> ;
	     FROM ARRAY <valData>  ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)>, "",<valData>,<ddriver>)

#command INSERT INTO <(filename)> <(data)>  ;
	     FROM MEMVAR           ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)>,<(data)>,,<ddriver>)


#command INSERT INTO <(filename)> ;
	     FROM MEMVAR           ;
		[VIA <ddriver>]    ;
		=> ;
	      fox_InsertData(<(filename)>,"",,<ddriver>)
   
// 15.11.2012
#command GO TOP IN <cTableAlias> => <cTableAlias>->(DbGoTop())

#command GO BOTTOM IN <cTableAlias> => <cTableAlias>->(DbGoBottom())

#command GOTO <nRecno> IN <cTableAlias> => <cTableAlias>->(DbGoTo(<nRecno>))

#xtranslate RECCOUNT(<cTableAlias>) => <cTableAlias>->( RecCount() )
#xtranslate FCOUNT(<cTableAlias>) => <cTableAlias>->( FCount() )
#xtranslate FILTER(<cTableAlias>) => <cTableAlias>->( DbFilter() )

#xtranslate USED(<cTableAlias>) => <cTableAlias>->(Used())
#xtranslate USED(<nWorkArea>) => (<nWorkArea>)->(Used())

#command SET FILTER TO <cFilter> IN <cTableAlias> =>  ;
         <cTableAlias>->(DbSetFilter( <{cFilter}>, <"cFilter"> ))

#command SEEK <eExpression> [<soft: SOFTSEEK>] [<last: LAST>] TAG <cTagName> IN <cTableAlias> => ;
            fox_Seek(<(eExpression)>,<.soft.>, <.last.>,<(cTableAlias)>, <(cTagName)>)



//

#endif
То есть вставив в код программы команду:

#include "FoxBibl.ch"

я могу писать на языке FoxPro! Скажу больше, для "извращенцев" - встречалась библиотечка реализации классов и функций интерпретатора "1С:Предприятие 7.7", т.е. на Харборе могу писать на языке "1С"
27.02.2015 12:12
AndreyZh
 
Постепенно набирает популярность "тема" программирования на Harbour под андроид устройства, начинают популяризиваться самописные библиотеки и разного рода связки "обычных" ЯП для мобильных устройств и бизнес приложений на системах, реализованных на (x) Harbour.

Как всякий новый тренд - это пока неустоявшиеся техники и латиносы "играют" компиляторами под Android & iOS, славяне (поляки, болгары) пытаются адаптировать сам Harbour под эти операционки. Украинцы и россияне создают связки java с harbour. Приведу пример "Российской" тенденции:

Цитата:
На мой взгляд, это вполне рабочий вариант - обычно управленцу не надо с телефона или планшета вводить, условно говоря, накладную. Он хочет иметь возможность посмотреть, как идут дела - и для этого такое приложение вполне подходит. Доступ к данным через Letodb. Функции, формирующие эти мини-отчеты вы пишете на Harbour сами. Для сборки пакета нужен, естественно, Harbour, Java и Android SDK.
LetoDB- это СУБД, в которой реализуется клиент-серверная организация хранения, обработки и извлечения информации из набора таблиц и индексов обычной dBase архитектуры файлов...

"Сильно" думал о переводе на данную СУБД системы "УС Лэнд", благо объем переделок минимальный, но:

1. До 4 ПК на запись скорость работы с данными будет меньше, чем в классической файл-серверной архитектуре;
2. В основном развивается LetoDB для xNix (Linux) серверов, что для меня лишний гемор;
3. Нет реальных клиентов под данную организацию обработки данных. Украинские разработчики отмечают, что LetoDB легко "держит" до 200 рабочих станций "на запись"... нет таких пользователей УС!

На сейчас "российский" подход к "андроид" видоизменился и примерно "выглядит" - есть несколько развиваемых приложений:

Цитата:
Выложена версия 5 с сырцами:

Теперь программа нормально отрабатывает при смене ориентации устройства. Добавлено простейшее меню. Добавлена возможность вызова Harbour - кода из Javascript из окна Webview, что позволяет реализовывать интерфейс программы на базе веб-интерфейса и связки Javascript + Harbour.
Ждем`с стабилизации технологии и потом буду детальней её изучать, хотя возможны "чудачества", как и с LetoDB - начали "пилить" под macOs, "сломалась" стабильность под Win & Linux
27.06.2016 16:23
AndreyZh
 
Пара новостей:

1. Российские разработчики на Харбор работают везде, но мало, кто в России... и как правило решая экзотичные задачи. Например свежая библиотека интеграции с нейронными сетями. Презентация автора:

Цитата:
Написал небольшую библиотеку для связи с FANN (Fast Artificial Neural Networks) - популярной библиотекой, реализующей искусственные нейронные сети


Впрочем, если понять суть [x]Harbour == компилятор преобразующий исходный xBase язык в программу на ANSI C, то ... ничего удивительного... Програмеры на [x]Harbour те же программисты C, только понимающие и прикладные области автоматизации.

2. Конечно можно писать и в "окошках". Один из примеров полезной програмки будет приведен в другой теме. Есть две ветви (семейства) развития библиотек:

а) HmGUI - базируется на метаклассах и позволяет собирать программы с графическим интерфейсом под Windows и xNix (Linux) без изменения кода и интерфейса. Следствием этого являются более убогие интерфейсные возможности.

б) MiniGUI - ветка, развивающаяся только под Windows. Впрочем эта "надстройка" включает и средства управления Internet, mail, графика, математические расчеты, SQL (все) сервера. Для Harbour (не xHarbour) доступно легкое создание многопоточных приложений.
15.11.2016 12:39
AndreyZh
 
Случайно наткнулся на статью Александра Кресина (Российский гуру по Харбор), где описаны дополнительные расширения с почти моей системе разработки:

Благодаря наличию так называемой "Системы расширения" (Extend system) к prg-модулю, написанному на Harbour, можно подключать модули, написанные на C, что делает возможным использовать большое количество самых разных инструментов программирования через C API. Многие такие модули находятся в Harbour/contrib, многие доступны с сайтов производителей и Open source репозитариев как так называемые 3-rd party библиотеки.

Собственно, значительная часть функций, модулей самого Harbour написана на C и использует ту же "Систему расширения". Отличие дополнительных библиотек только в том, что их по тем или иным причинам не сочли возможным или нужным включить в ядро Harbour.

Ниже приведен список того, что включено в Harbour/contrib на момент написания этой статьи:

• gtalleg - основанный на Allegro экранный (GT) драйвер
• gtqtc - экранный (GT) драйвер, основанный на QT
• gtwvg - экранный (GT) драйвер для Windows, я бы сказал - продвинутый gtwvt, что-то среднее между консолью и GUI
• hbamf - привязка к библиотеке AmFast, возможно, кому-то это знакомо
• hbblat - основанная на Blat консольная утилита для отправки почты по SMTP протоколу
• hbblink - набор функций, знакомый тем, кто пользовался линковщиком Blinker
• hbbz2 - набор функций-оболочек для библиотеки BZip2
• hbbz2io - потоковый драйвер ввода/вывода для BZIP2
• hbcairo - набор функций-оболочек для Cairo. Cairo - это мультиплатформенная библиотека для создания 2D векторной графики, написанная на C. Она имеет привязки к Python, Perl, Java, C++, C#, работает на Linux, BSDs, OSX, Windows
• hbcomio - потоковый драйвер ввода/вывода для последовательного порта
• hbcomm - маленькая библиотечка для COM-портов, основана на hb_com... функциях Harbour
• hbct - реализация известной всем, кто писал на Клиппере, библиотеки Clipper Tools
• hbcups - маленький набор функций для Cups (принтер по умолчанию, список принтеров, печать файла на заданный принтер)
• hbcurl - интерфейс к библиотеке Curl
• hbexpat - интерфейс к библиотеке Expat, свободному XML-парсеру
• hbfbird - библиотека для доступа к популярной SQL СУБД Firebird
• hbfimage - набор функций-оболочек для графической библиотеки FreeImage
• hbformat - утилита для форматирования prg файлов
• hbfoxpro - маленький набор функций и заголовков для совместимости с Foxpro
• hbfship - набор функций для совместимости с Flagship
• hbgd - набор функций-оболочек для графической библиотеки GD
• hbgs - несколько функций для Ghostscript
• hbgt - набор строковых функций
• hbgzio - потоковый драйвер ввода/вывода для GZIP
• hbhpdf - интерфейс Libharu - библиотеке для создания pdf-файлов
• hbhttpd - http сервер, написанный на Harbour
• hblzf - набор функций-оболочек для библиотеки компрессии данных LZF
• hbmagic - набор функций-оболочек для библиотеки Libmagic (распознавание файлов)
• hbmemio - Драйвер для файловых операций в оперативной памяти
• hbmisc - набор разных функций
• hbmlzo - набор функций-оболочек для библиотеки компрессии данных miniLZO
• hbmxml - набор функций-оболочек для библиотеки miniXML
• hbmysql - библиотека для доступа к популярной SQL СУБД MySQL
• hbmzip - поддержка zip компрессии, основанная на использовании библиотеки Minizip
• hbnetio - альтернативная реализация ввода-ввывода RDD с поддержкой RPC, перенаправляющая выполнение операций с базами данных на сервер, включает клиентскую и серверную части
• hbnf - реализация известной всем, кто писал на Клиппере, библиотеки Nanfor
• hbodbc - библиотека для доступа к данным через ODBC
• hboslib - Маленький набор функций oslib
• hbpgsql- библиотека для доступа к популярной SQL СУБД postgreSQL
• hbpipeio - потоковый драйвер ввода/вывода для PIPE (каналов)
• hbrun - утилита hbrun, см. здесь
• hbsms - библиотека для отправки sms
• hbsqlit3 - набор функций-оболочек для библиотеки SQLite
• hbssl - интерфейс к OpenSSL API
• hbtinymt - интерфейс к tinyMT - генератору псевдослучайных чисел
• hbtip - набор классов, основанных на INET-подсистеме, реализующий ftp, http, pop3 и др. протоколы
• hbtpathy - реализация популярной библиотеки для последовательных ( COM ) портов Telepathy
• hbunix - маленький набор функций для Unix-систем
• hbwin - набор функций для связи с Windows API, в т.ч. реализация OLE
• hbxdiff - набор функций-оболочек для библиотеки libXDiff
• hbxpp - набор функция для совместимости с xBase++
• hbzebra - библиотека Зебра ( баркоды )
• hbziparc - набор функций для упаковки/распаковки файлов в zip - формате
• rddads - RDD для Advantage Database Server
• rddbm - BMDBF RDD
• rddsql - простой RDD для SQL СУБД
• sddfb - RDD для Firebird
• sddmy - RDD для MySQL
• sddoci - RDD для Oracle через OCILIB
• sddodbc - RDD для ODBC
• sddpg - RDD для postgreSQL
• sddsqlt3 - RDD для SQLite
• xhb - набор функций и классов для совместимости с xHarbour

Хочу отметить, что не все из перечисленных модулей полностью готовы к использованию, некоторые представляют собой просто пробу пера, рассчитанную на то, что общими усилиями их удастся довести до более высокой степени готовности.

Особо "умилило" наличие "hbcurl - интерфейс к библиотеке Curl", т.е. возможность использовать возможности cURL без вызова из командной строки - "моргушки" при отправке запросов в "УС Лэнд:ЕГАИС" ... только жаль, что всё это нельзя напрямую использовать мне, как использующего не совсем совместимого с Harbour "родственника" xHarbour... В принципе конечно можно, но только путём "прикрепления" и "допиливания" прилагаемых к перечисленным к библиотекам исходных модулей
19.11.2017 07:47
AndreyZh
 
Обычно отключаю сотовый телефон в 19:00 (по Мск), т.к. уже не ожидаю ничего приятного после сего часа. Утром включил и получил SMS от неизвестного теперешнему (их сейчас меняю пытаясь приучить себя к смартфонам) телефону номера - "переустанавливаем ОС - какую 64/32 разрядную Windows ставить?"

1. Все консольные приложения написаны на xHarbour и собраны 32 разрядном компилятором (можно и собрать 64 разрядным, но тогда это ограничит число пользователей) и гораздо более стабильно и быстрее работают по Win64;

2. Программы ХБК и ценников пока в основном собираются через VFP5 - 16 разрядная, т.е. не будут работать вообще под Win64, а через них выводятся (печатается) первичка в формате "1С";

3. Крайне редко (последнее от ноября 2015) ценники и ХБК по моей просьбе (у меня нет лицензии) собирают под VFP9 - 32 разрядная, т.е. вариант системы работает под Win64... но для этого нужно много переделывать и просить других программистов. При этом пользователям, как следствие мне это не сильно нужно.

Резюме: При важности, что бы вся сопроводительная документация была в "привычном" виде нужно ставить 32 разрядную Windows! Утилита "УС Лэнд:ЕГАИС" не использует VFP, как следствие более лучше работает под 64 разрядной системой и более стабильно под Windows 10/64...
02.01.2018 14:28
OlegON
 
Цитата:
AndreyZh Устаревший консольный интерфейс, неудобный для большинства современных пользователей
Я по прежнему больше люблю консольки. Да и грамотный народ, усаживаясь за программу, как правило, изучает ее хоткеи. А без мыши виндовые окошки теряют бОльшую часть своей привлекательности.
02.01.2018 15:57
AndreyZh
 
Цитата:
OlegON Я по прежнему больше люблю консольки... Да и грамотный народ, усаживаясь за программу, как правило, изучает ее хоткеи. А без мыши виндовые окошки теряют бОльшую часть своей привлекательности.
Поддерживая много больших проектов автоматизации просто банально не смог бы этого, занимаясь "оформительскими плюшками", т.е. всё "свободное" время уходит на решение бизнес задач, а их визуальное отражение, к сожалению отходит на второй план

В принципе, если бы не "лень"-матушка, то и GUI системы разработки опирается на win api, т.е. также быстро будет работать на "мусоре", да и под Linux без изменения кода "элементарно" пересобрать проект... но не успеваю - нужно ещё и денежку, в том числе на добрые дела успевать зарабатывать...
02.01.2018 18:55
FinSoft
 
Привет. Виндовый интерфейс не только и не столько плюшки в оформлении. Прежде всего, это возможность работы в многооконном контексте. В функционально сложных системах это позволяет оптимизировать интерфейс. Другой аспект, когда работаешь с актуальными версиями системы разработки, оказываешься в составе комьюнити с другими разработчиками, что тоже очень важно.

Андрей, в твоей ситуации перейти с консольного интерфейса очень непросто. А, возможно, и нет смысла.На консоли сейчас мало пишут, это имеет и обратную сторону медали. Ты делаешь что-то непохожее на других и этим обращаешь на себя внимание. Плюс простота разработки и компактность программ. Есть немало людей, которые готовы работать с консолью. Так что нет смысла особо комплексовать по этому поводу.

К слову, на днях делал для себя библиотеку вывода в xlsx файлы. На перспективу. Это переименованный zip архив, который содержит набор каталогов и xml файлов. То есть ты можешь из своих dos программ спокойно формировать файлы для электронных таблиц, с которыми работают современные версии excel и calc...
02.01.2018 20:17
AndreyZh
 
Добрый вечер Вячеслав! С новым годом и новыми успехами в разработке и внедрении "Купца"!

Позволь всё же дать комментарий к твоему сообщению? Возможно, да и не нужно тебе, однако видимо эту тему не читал, а посему имеешь некоторое недопонимание системы разработки (языку программирования) [x]Harbour, который является на сей момент самым идеологически продвинутым, современным, интенсивно развиваемым и универсальным инструментом.

Основная его парадигма: имеется исходный код на расширенном диалекте языка xBase, в который можно включать исходные фрагменты на Assembler и ANSI C или посредством препроцессора и инструмента "блоков кода" включать команды в синтаксисе любого ЯП, например "1С" или "Clarion" , который посредством компилятора полностью преобразуется в исходный код на языках C + Assembler.

Далее в задании сборки программы может указать каким компилятором C (C++) его нужно собрать. От сюда следует, что могу собрать под Dos, Mac OS, Linux, Android, etc. В проект могу подключить любую библиотеку на С, т.е. могу собирать программу с графическим интерфейсом любой современной операционной системы! Просто "лень"


Цитата:
FinSoft Привет. Виндовый интерфейс не только и не столько плюшки в оформлении. Прежде всего, это возможность работы в многооконном контексте.
Не знаю, что эти "слова" означают Однако в реальной "жизни" запускается требуемое число копий приложений, где в каждой копии открыта своя задача и эти задачи, как копипастом, так и встроенными средствами обмениваются данными. Пример "УС Лэнд:ЕГАИС" - сегодня:

1. На кассовом узле:
- интерфейс кассира;
- интерфейс списаний;
- инвентаризации в параллельном режиме.

2. На ПК товароведа - сервер УТМ:
- работы с регистром №3;
- постоянный анализ чеков;
- инвентаризации в параллельном режиме.

3. Ноут по WiFi - инвентаризации в параллельном режиме.

... Конечно на этих ПК "крутились" и другие программы ...

Цитата:
FinSoft В функционально сложных системах это позволяет оптимизировать интерфейс. Другой аспект, когда работаешь с актуальными версиями системы разработки, оказываешься в составе комьюнити с другими разработчиками, что тоже очень важно.
Ясень-пень... Имеется большое число разработчиков на [x]Harbour, как русскоязычных, но в основном индусов, поляков и латиносов... Хотя команда разработки - украинцы и америкосы латинского происхождений. Поищи - есть много форумов по данной системе.

Цитата:
FinSoft Андрей, в твоей ситуации перейти с консольного интерфейса очень непросто.
Да - очень сложно! Есть система класса 1С:УПП и куча сопутствующих приложений, есть "УСЕга", есть рабочие обязанности, в том числе, как эникейщика и бухгалтера... За поддержку и развитие этого всё платят "какие-никакие" денежки... и крайне сложно из этого вырваться

Цитата:
FinSoft К слову, на днях делал для себя библиотеку вывода в xlsx файлы. На перспективу. Это переименованный zip архив, который содержит набор каталогов и xml файлов. То есть ты можешь из своих dos программ спокойно формировать файлы для электронных таблиц, с которыми работают современные версии excel и calc...
Увы нет на разработки "плюшек для времени" времени, но при острой необходимости осваиваю что-то из библиотек, краткий список которых приведен выше... и где наверняка есть вывод в XLSX?

Последний раз редактировалось AndreyZh; 02.01.2018 в 20:21.
02.01.2018 21:54
FinSoft
 
С Новым годом Андрей! Пишу со смартфона, поэтому кратко.
Несколько запущенных экземпляров приложения не имеют общего управления. Например, формируем отчет, щелкаем по строке, открываем в отдельной нити связанный документ. Или передаем фокус, если этот документ уже открыт. Общие кнопки управления для открытых нитей. И тому подобное. Речь об удобстве переключения, управления, работы в целом.
По поводу си кода. В кларионе изначально тоже можно было вставлять блоки кода на си или ассемблере. Вызывается соответствующий компилятор и все собирается в один проект. Но реально этим пользуются единицы. Одно дело декларировать, другое дело использовать в реальных проектах. Я могу в целом понять код на си, но править, если что, сырцы на си, нет.Я думаю на кларионе... По моим наблюдениям, большинство серьезных библиотек на си коммерческие. И почти все, что нужно, можно написать на родном языке, на выходе все равно получается быстрый машинный код.
02.01.2018 22:01
FinSoft
 
Поэтому я придерживаюсь правила использовать в боевой системе только рантайм клариона, win api и сырцы на кларионе. К первому есть доверие, так как работает во многих коммерческих проектах по всему миру, а с сырцами на родном языке можно быстро разобраться, если что. Это придает системе необходимый уровень надежности.
27.06.2018 20:42
AndreyZh
 
Коллеги по системе разработки захотели посмотреть исходники по удаленным режимам работающей когда-то подсистеме "УС Лэнд:ЕГАИС" управления ФР от Атол. Дабы не мудрить со ссылками в файлопомойках позвольте разместить его тут?
Вложения
Тип файла: 7z ON_line_kassa.7z (10.7 Кб, 9 просмотров)

Последний раз редактировалось AndreyZh; 27.06.2018 в 20:44.
Опции темы


Часовой пояс GMT +3, время: 18:33.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.