Довелось тут портировать на работе проект с Delphi 7 на Lazarus. Причины портирования были как и экономические, так и спортивный интерес. Окончательный перенос еще впереди, но о  первоначальных подводных камнях могу рассказать, пока не забыл.

 

Мдее. Гугл по слову портирование не выдал приличной картинки. По этому взял первую попавшуюся картинку по слову случайная картинка. Вот вам гражданин с музыкальным инструментом.

портирование

В общем, в один прекрасный день, нынешнее течение времени и пространства дало  новый вектор направления и понадобилось мне одну рабочую программу портировать с delphi на любую другую бесплатную среду разработки.  Дескать Delphi 7 хоть это и  "стильно, модно, молодежно"  но покупать лицензию на новую версию delphi ни кто не будет. Компоненты еще куда не шло, но на саму среду что то дороговато.  Поэтому решили выслушать мои предложения, точнее сказали делай как хочешь , но что бы оно работало. Тут я решил что раз так значит  быть Lazarus` у основной средой разработки. Благо опыта работы с ним предостаточно, а конечному пользователю все равно на чем написана программа, главное что бы она работала, и работала правильно.

Посему покурив интернет я начал портировать программу. Она не сильно большая конечно. 7 тысяч строк кода и  43 формы. Программа учета мед услуг.

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

Для портирования проектов  в Lalazas имеется специальный помощник. За него  отвечает пункт меню  Сервис - Преобразования кода на Delphi. Там 4 пункта. 

menu

Я выбрал Преобразовать проект Delphi в проект Lazarus. 

Далее появилось окно с предложением выбрать необходимый проект. Тут думаю трудностей не возникнет. И да кстати. Тренируйтесь на копии проекта. Мало ли ли потом придется назад все возвращать.

Далее появится окно с параметрами преобразования проекта. Тут честно сказать я ступил и не стал настраивать  дополнительные параметры, после чего пришлось много править руками.

im option

 В данном мастере можно указать почти все правила преобразования. 

Более подробно. 

Замена модулей. 

rep modul

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

Замена типов

rep tip

 Данный момент я тоже благополучно не углядел. Потом пришлось через Nodepad++ делать массовую замену названий классов компонентов по всем файлов. Хотя можно было сразу тут указать какие компоненты доступа к данным я использую.

Замена функций.

replase function

Данный пункт требуется если вы работает в программе с файлами или windows api.  Мне он не пригодился.

Остальные пункты я не рассматриваю, если потребуется сами сможете из изучить.

После того как я нажал кнопку Начать преобразование Lazarus выдал несколько ошибок о преобразование типов данных, поскольку я этот процесс раннее не настроил. В целом проект преобразовался нормально, руками пришлось править по мелочи.

Несколько замечаний.

  • Lazarus в отличие от Delphi 7, использует Unicode, поэтому после преобразования проекта сделайте преобразование кодировки файлов проекта.  Это можно сделать через пункт Сервис - Преобразовать кодировку проектов/пакетов.
  • Тоже самое необходимо сделать с файлами отчетов, в моем случае это была система FastReport.  Их кодировку я так же менял через Nodepad++.
  • Некоторые визуальные компоненты располагаются в юнитах имеющих разные названия в Delphi и Lazarus, тут приходилось изучать все опытным путем.

По мере работы над проектом будут дополнять статью.

Добавить комментарий