Недавно мне нужно было написать по учёбе пару программок.
С одной домашней работой меня очень выручила библиотека JCL, в частности класс JclExprEval.TExpressionCompiler, позволяющий парсить и вычислять значения математических функций. Хотя, если бы этого парсера не было, я бы просто зашил некоторое количество функций прямо в программу. В конце концов, это же просто очередная программка для университета. Но благодаря JCL, в программку можно ввести любую одномерную функции и получить её график.
Кстати, тот же Lazy Delphi Builder не состоялся бы без JCL.
А у TJvDbGrid есть вкусное свойство, позволяющее назначать каждой колонке свой редактор.
Это о плюсах свободных библиотек.
А теперь о минусах.
При использовании JCL и/или JVCL нужно быть готовым к тому, что очень многое придётся переделывать под себя.
Например, при написании вышеупомянутой программке, я с удивлением выяснил, что JclExprEval не умеет обрабатывать возведение в степень. При этом классы написаны так, что ключевые элементы спрятаны в private и написав наследника нужный функционал не добавить. В общем, я скопировал JclExprEval в папку с проектом и добавил нужную операцию.
А сейчас пишу другую домашку, и для неё мне нужен хороший бесплатный DbGrid и возможность экспорта данных в html, csv. Я помню, что в JVCL было несколько гридов и какие-то компоненты умеющие экспортировать данные. Я опущу тот момент, что мне пришлось основательно повозиться, чтобы установить свежий snapshot из svn\trunk. Скажу лишь, что в поисках компоненты для экспорта я снова столкнулся с тем, что для универсально использования некоторые компоненты вообще неприспособленны. Зато бесплатно, гы-гы.
Маленький список проблем:
TJvgExportHTML вообще ничего не делает. Ибо метода Execute у него просто нет. Судя по записям в баг-трекере, это нормальное явление для компонент из пакета Globus, ибо “часть компонент находится в альфа стадии”.
TJvDBGridHTMLExport экспортирует данные только в файл и при этом теряет unicode символы.
В который раз сталкиваюсь с тем, что самому написать было бы быстрее, чем искать подходящее решение на стороне. =) Использование сторонних библиотек - это сложнее чем делегирование заданий типа "широкоформатная печать спб", тут самому много чего делать приходится.
Спору нет, JVCL гриды очень хороши... для бесплатных. Но стоит только попользоваться, например, DevExpress'овскими и как будто переходишь на новый уровень.
ОтветитьУдалитьНе нашел как тут подписаться на комменты.
ОтветитьУдалитьмысли навеяные статьёй ))
ОтветитьУдалитькак поменялось все, теперь для написания домашек используют сторонние компоненты, упрощая программу...
а еще лет 6 назад мы делали домашки на паскале и борладндовском си, реализуя все что необходимо сами. просто не откуда было все это взять ))
и только в курсовых, мы могли себе позволить использовать делфи и vc и любые другие средства для реализации задачи...
Михаилу:
ОтветитьУдалитьРазумеется, некоторые коммерческие гриды лучше бесплатных. =) Я с DevExpress-вским гридом работал совсем немного и с довольно старой версией, но не припомню чтобы там было что-то, без чего нельзя было бы обойтись.
А на комменты можно подписаться только через RSS. Смотри ссылку "RSS комментариев к странице"(недавно добавил).
2 ctapmex:
ОтветитьУдалитьлет 6 назад я тоже писал лабораторки на Borland C++ под Дос. Между прочим, многие компоненты/классы существовали ещё и в те времена, но я, например, тогда даже не знал что это такое и как ими пользоваться. Хотя, Дельфей я тогда тоже не знал. =)
Но ведь TExprCompileParser.CompileExpr объявлена как виртуальная?
ОтветитьУдалить2 GunSmoker:
ОтветитьУдалитьДа, действительно. Значит либо я ступил, либо увидел, что класс TExprBinaryVmOp объявлен в секции implementation и решил, что без него ничего не получится.
Я посмотрю подробнее позже. Сейчас времени не хватает.
ОтветитьУдалитьGreat site.
ОтветитьУдалитьNice site you have!
ОтветитьУдалить