|
PB9 vs Delphi/BCB
|
|||
---|---|---|---|
#18+
Я хочу задать вопрос от лица все тех кто рескнул и решил переходить с Delphi на PB. Все ли что мы могли в Delphi мы сможем и в PB? Будем исходить из предположения что в Delphi мы использовали DevExpress Components Можно ли и какой ценой сделать из Data Windows что-то по функционалу не уступающему Quantum Grid? Можно ли реализовать функционал LayoutManager? Где можно почитать про управление большими проектами в PB? Насколько надежен/удобен уго Source Control? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 13:14 |
|
PB9 vs Delphi/BCB
|
|||
---|---|---|---|
#18+
Я прямо только что с Delphi + DevExpress. Сравнивать буду естественно с точки зрения построения клиентских приложений БД, все остальные возможности Delphi в расчет не беру: DataWindow vs QuantumGrid - я бы сказал DataWindow однозначно выигрывает, так как являясь еще и источником данных в одном флаконе позволяет сразу описать получение данных, сохранения их изменений, правила ввода, форматирование своих элементов, поддерживает сортировку и фильтрацию. QuantumGrid + TDataSet в связке умеют примерно то же самое, однако все это разбивается по событиям этих компонентов, логика замыливается, сортировка и группировка поддерживается только при включенном LoadAllRecord в QuantumGrid, что приводит к тому, что он фактически формирует у себя копию данных TDataSet и с ней работает, что приводит к очевидным проблемам синхронизации текущей записи у него и у TDataSet. Так же гораздо удобнее у DataWindow сделаны Lookup поля, позволяющие в виде выпадающего списка указать другой DataWindow. У QuantumGrid это тоже реализованно, но в силу опять же компонентно-ориентированности Delphi смахивает на танец с бубном, да и обратиться в коде к выпадающему гриду не так уж и легко и безопасно. По печати DataWindow опять же обгоняет QuantumGrid, так как является мощным отчетником, в отличие от примочки для печати QuantumGrid. - В кач-ве преимущества QuantumGrid можно назвать его более современный и плоский интерфейс, возможность поиска набираемого текста по полю, поиска набираемого текста в Lookup и более удобных методов вызова сортировки и группировки, т.е. мышкой. Однако если подключить PFC, то поиск и сортировка в DW будут работать аналогично. PB vs Delphi - естественно рассматриваем не семантику языка, а модель работы. Итак очевидные преимущества PB: наличие сборщика мусора, наличие пула глобальных обьектов, поддержка очередей вызовов, наличие возможности динамического вызова событий-методов (условно назовем их так, чтобы не путать с событиями-делегатам Delphi), поддержка в языке конструкций SQL, легкое создание визуальных иеархий классов (в Delphi только есть наследование форм, чтобы написать визуальный компонент для проекта придется его регистрировать в IDE и включать в пакет, хотя можно конечно воспользоваться Frame, но это прокатывает только для составных компонентов, а не для наследования стандартных). Так же я считаю довольно интересной и удобной модель ООП в PB при визуальном проектировании, когда контролс, положенный на форму фактически просто внутри формы обьявляется как тип и наследуется от выбранного типа контролса, что означает, что весь код на события фактически хранится внутри его класса-наследника, т.е. this = Controls, в то время, как в Delphi на событие self = parent (form). Так же стоит сюда приплюсовать довольно таки мощный набор базового функционала PB - один только DataWindow является одновременно мощным средством просмотра и редактирования данных, отчетником, графиком и кросстабом - в Delphi же без сторонних компонент не обойтись, которые как известно тоже денег стоят и не малых и нет гарантии, что в них нет ошибок и они будут поддерживаться производителями для следующих версий Delphi (например в одном только пакете компонент DevExpress я кучу ошибок лично исправил). - в чем Delphi удобнее: поддержка делегирования функций и методов классов позволяет создавать компонентно-событийную модель, что является несомненным преимуществом при написании неких базовых классов-контроллеров (в PFC - услуг), обслуживающих определенные классы и способных самостоятельно подписываться и реагировать на события обслуживаемого класса. Плюс несомненно более удобная IDE, причем не падающая "чисто случайно", как это бывает в PB. То же самое и касается отладчика. Не маловажную роль играет то, что в Delphi есть виртуальная таблица методов классов, благодаря которой во первых при изменении модели класса предка не приходится перекомпилировать все классы-наследники и во вторых можно в рунтайме проводить полноценное приведение к типам (хотя с точки зрения построения клиентских приложений это я не считаю важным). Так же не стоит забывать наболевшее для PB - поддержку встроенного Layout Manager, позволяющего проводить выравнивание визуальных компонент на родителе, поддержку панелей как контейнеров для контролсов. Поддержку же в Delphi ссылок, прямой работы с памятью, его модель VCL, жестко повязанной на наследовании и часто использующей ссылки и прямую работу с памятью, я считаю атавизмом и искренне желаю, чтобы Delphi от всего этого избавился, заодно заведя себе сборщик мусора и желательно компиляцию в байт-код. Итак - что мы имеем: в Delphi как минимум нехватает сборщика мусора, другой модели VCL, пула глобальных обьектов и аналога DataWindow (не думаю, что хоть что то можно реализовать собственными силами) в PB явно не хватает Layout Manager, поддержки событийной модели и панелей контейнеров (первое и второе можно элементарно реализовавать самим, а вот панели уже полностью на совести разработчиков PB). Вроде и все, что могу пока сказать по данному вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 14:15 |
|
PB9 vs Delphi/BCB
|
|||
---|---|---|---|
#18+
Как в PB добавить возможность инкрементного поиска в ComboBox который ссылается на DropDataWindow как у DevExpress ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 17:56 |
|
|
start [/forum/topic.php?fid=15&fpage=116&tid=1339558]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 381ms |
0 / 0 |