Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

О выборе версии Delphi для разработки проектов написано уже достаточно. Почему я решил снова обратиться к этой изъезженной теме?

Причины две. Во-первых, вопрос о выборе Delphi продолжают задавать. Во-вторых, существует достаточное количество “экспертов”, которые с упорством революционных активистов продолжают утверждать, что архаичные версии Delphi являются панацеей и не менее упорно отрицают все преимущества современных версий. Да. Не смотря на то, что на дворе XXI век.

К сожалению, следует признать тот факт, что большинство вакансий для Delphi программистов так или иначе связаны с поддержкой старых проектов. И, опять же, большинство из этих проектов реализованы на Delphi 7. Только в прошлом году мне пришлось столкнуться с двумя такими проектами. И простите мне мою безапелляционность, но я считаю, правильным названием было бы что-то подобное: “Почему следует отказаться от использования Delphi 7 прямо сейчас?!”

Ниже я постараюсь аргументировать свою точку зрения по пунктам и с примерами.

1. Поддержка Unicode.

Здесь уже написано много, не буду повторяться. Замечу только, что поддержка Unicode это то, чего просили пользователи ещё во времена Borland и это первое, что сделала Embarcadero, приобретя продукт. За что ей большое спасибо.

2. Некорректная работа приложений, собранных в Delphi 7 в новых версиях Windows

Это ключевой момент. Простейший пример.

Как видно на видео, в 64-битной версии Windows обработчик события OnDrawTab компонента TPageControl просто не работает в приложении собранном на Delphi 7. И прекрасно работает, если его собрать в Delphi XE2. Мне даже не интересно почему это происходит. Значительно интереснее, что ещё не работает в старых приложениях, и кто первым об этом узнает я или пользователи этого приложения.

3. Некорректная работа отладчика.

Отладчик Delphi 7 – отдельная тема. Нет, вы не посмотрите ни значения даты, ни содержимое списков, ни значения свойств объектов. С этим как-то можно, выражаясь словами поэта, мучиться, но жить.

Но подобные вещи просто удручают.

4. (Не) удобство IDE

Конечно, можно привыкнуть обходиться без всех тех удобств, которые предоставляют новые версии Delphi. Можно обходиться без маркеров выравнивания компонентов в редакторе форм и без подсветки ошибок, можно привыкнуть к архаичным старым диалогам. Даже номера строк с букмарками при выходе из среды можно переписывать маркером на холодильнике.  Но когда я поймал себя на том, что запускаю Delphi 10 для того, что бы найти в какой вкладке расположен нужный компонент… IDE Delphi 7 действительно неудобная.

Список можно продолжать долго. Среди прочего можно упомянуть и обновления языка и более современные компоненты. И, конечно, те возможности развития проекта, которые даёт FireMonkey.  Но, думаю даже второго пункта из приведенного выше списка достаточно для того, что бы крепко задуматься о том что бы перейти на современную версию Delphi. Безусловно, Delphi 7 была лучшей средой разработки своего времени. Но ведь с тех пор прошло 15 лет. В масштабах IT это целая эпоха.

А что же выбрать?

Я придерживаюсь мнения, что всегда нужно выбирать самую новую версию Delphi. Хотя бы потому, что она активнее всего поддерживается. Что касается стабильности, то, как правило, совсем уж грубых багов в релизах не появляется. В крайнем случае  можно дождаться второго обновления (Update 2). Единственным моментом, который нужно учесть может стать наличие в проекте сторонних компонентов. В принципе, есть библиотеки, которые “умерли по дороге”. Например, они были портированы под Delphi XE, но для Delphi 10 уже не поддерживаются. В этом случае можно попробовать портировать их самостоятельно. Но чаще встречаются случаи когда библиотека либо не поддерживалась в Unicode версиях Delphi, либо поддерживается до сих пор, но выходит с сильным опозданием от релиза среды разработки. Для первого варианта я предпочитаю найти возможность замены проблемных компонентов. Следует учесть, что в сравнении VCL за последние 15 лет так же сильно эволюционировала и, возможно, без чего-то можно обойтись При второй варианте, конечно, лучше начать перевод проекта на ту версию Delphi, для которой требуемая библиотека имеется. С точки зрения финансовых затрат вы не теряете ничего, поскольку покупая Delphi последней версии вы так или иначе получаете лицензию на все предыдущие версии Delphi начиная с Delphi 7 включительно.

И последнее, что хочу отметить. За редкими исключениями процесс перевода приложения на Unicode версию Delphi не так сложен, как это может показаться.  Хотя, естественно, всё зависит от проекта. Но так или иначе, всё идёт к тому, что код, написанный с помощью старых средств разработки, не будет поддерживаться новыми версиями Windows. И, как следствие, перевод проекта на новую версию Delphi станет необходимостью.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

8 комментариев: О том, какую версию Delphi нужно выбрать…

  • Поддержка Unicode – это конечно молодцы, но без этого можно было жить.
    Зато: на последних версиях delphi попробуйте написать ftp-клиента, работающего с сервером на Unix. Файлы на сервер зальются, а вот при скачивании их обратно – они увеличиваются в размере и не отрываются, потому что Embarcadero решило переписать компоненты для работы с ftp. При этом на D7 все прекрасно работает. И это не единственный пример некорректной работы компонентов, которые прекрасно работали на D7.

    Компилятор)
    Вы знаете, не помню точно как было на D7, но по моему там нельзя было делить на 0, у embarcadero уже несколько раз сталкивался с тем что можно.
    Кроме того, попробуйте запустить вот этот код на последних версиях delphi:
    procedure TForm1.Button1Click(Sender: TObject);
    var i:Integer;

    function Test:string;
    begin
    //Result:=”;
    Result:=Result+’1′;
    end;

    begin
    for i := 1 to 10 do
    ShowMessage(Test);
    end;

    Вы будете удивлены результату))
    Компилятор косячен был и будет – потому что чтобы найти его косяки нужно писать программы, которые он отлаживает, а не просто верить в то что он “идеален”. Ни Borland ни embarcadero сим не занимаются

    • Мне всегда прикольно читать кометнтарии типа: “Без Unicode можно жить”, “новая версия компоненты работает по другому” (файлы с ftp уже не открываются), “мой код уже не работает (работает по другому) в новой версии” (я запустил пример и он работает именно так как и ожидалось).

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

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

      • Согласен. Но тут ещё один момент. За этими “мнениями” стоят бюджеты проектов.

      • “я запустил пример и он работает именно так как и ожидалось” – Серьезно?))
        Delphi XE8 Architect
        На каждой новой итерации ShowMessage увеличивает значение test, хотя с чего бы это ему хранить значение result?))
        По поводу ftp, попробуйте написать его, если Вам конечно не лень, и Вы поймете что я был прав. Но Вам наверное лень ;)

    • Проблема не в наличии ошибок компилятора. Это есть всегда и везде. Проблема в том, что код работавший раньше в ранних версиях Windows перестаёт работать, при чём самым не предсказуемым образом. И это никто никогда не то, что не пофиксит, но даже не занесёт в QC. Потому, что старые версии IDE уже не поддерживаются, а новые всё-равно лучше.

  • Сергей написал: “я запустил пример и он работает именно так как и ожидалось” – Серьезно?))

    Max абсолютно прав! Язык Delphi отличается от классического Pascal. В частности, это касается переменной Result в функциях. В документации и на многих сайтах типа StackOverflow можно найти про необходимость явной инициализации этой переменной в функциях. Почему это так, хорошо написано, например, в книжке на странице 29

    • Почему же компилятор тогда не высвечивает хинты (Shift+F9) на то что result не инициализирована в функции перед работой? – Ведь это явно тянет за собой ошибки))

Ответить на Max Отмена ответа

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика