Какие существуют инструменты для преобразования приложения Delphi 7 в C# и инфраструктуру .Net?[закрыто]

StackOverflow https://stackoverflow.com/questions/59547

  •  09-06-2019
  •  | 
  •  

Вопрос

Я поддерживаю старое приложение только для ПК, написанное на Delphi 7.Хотя в прошлом Delphi мне очень хорошо служил, сейчас я использую его только для этого одного приложения и чувствую, что мои навыки в этом языке ухудшаются.Его синтаксис слишком отличается от моих «повседневных» языков Java/Ruby, поэтому мне требуется больше времени, чтобы освоиться в написании нового кода, к тому же он настолько старый, что я не использовал много интерфейсИтак, код не управляется, и теперь он кажется мне древним!

Многие из моих пользователей переходят на Vista, которая может запускать приложение в режиме совместимости или может иметь проблемы с GPF в зависимости от того, как их компьютер настроен их ИТ-отделом, поэтому мне приходится проводить некоторое обслуживание приложения.Мне интересно, стоит ли мне перейти к более знакомому стеку.

Существует ли автоматизированный инструмент, который выполнит всю работу по преобразованию базы кода в C#, оставив мне возможность сконцентрироваться на преобразовании любых нестандартных компонентов?Я использую встроенный компонент базы данных под названием Абсолютная база данных который совместим с BDE и использует стандартный SQL, а также собственный компонент HTML-браузера Delphi, который можно заменить чем-то из мира Microsoft.

Насколько хороши эти инструменты преобразования?

Это было полезно?

Решение

Мне неизвестны какие-либо автоматизированные инструменты для такого преобразования.Лично я бы посоветовал вам придерживаться Delphi, возможно, просто обновиться до новой версии.Я видел пару DOM-кодов, которые пытались преобразовать Delphi в C#, но это не решает проблему библиотеки.

CodeGear (формально Borland) имеет инструмент для переход с C# на Delphi это работает нормально.Я предполагаю, что инструменты, работающие в другом направлении, будут работать так же (требуя большого количества редактирования).Вот шведский инструмент, который работает по тому же принципу CodeDOM. Delphi на C# (и ряд других языков).Есть и другие, я просто сейчас не могу их найти.

Другой вариант — перейти на более новую версию Delphi для .NET и таким образом перенести свой код на .NET.Как только вы заработаете в Delphi для .NET (что будет довольно просто, за исключением встроенной БД, если у них нет версии .NET), вы можете использовать .NET-отражатель и Дизассемблер файлов переверните IL на C#.Вы по-прежнему будете использовать VCL, но вместо Object Pascal можете использовать C#.

Другим аналогичным решением было бы портировать его на Кислород от RemObjects.Я считаю, что у них есть путь миграции Delphi Win32 на WinForms.Затем используйте .NET-отражатель и Дизассемблер файлов переверните IL на C#.

Короче говоря, простых ответов нет.Языковая миграция проще, чем миграция библиотек.Во многом это зависит от того, какие сторонние компоненты вы использовали (помимо AbsoluteDatabase) и выполняли ли вы какие-либо вызовы Windows API непосредственно в своем приложении.

Другой совершенно другой вариант — поиск оффшорной команды для поддержки приложения.Вероятно, они смогут сделать это дешево.Вы могли бы найти кого-то внутри страны, но это, без сомнения, обойдется вам дороже (хотя, учитывая падающий доллар и плохой рынок труда, никогда не знаешь наверняка…..)

Удачи!

Другие советы

Был научный отчет Джона Бранта об успешном преобразовании проекта Delphi объемом 1,5 миллиона строк в C#.Он написал парсер Delphi, генератор C# и множество правил преобразования для AST.Постепенное расширение набора правил, ежедневная сборка, множество модульных тестов и некоторое переписывание сложных частей Delphi позволили ему с командой из четырех человек, среди которых были некоторые первоначальные разработчики с глубокими знаниями Delphi и C#, перенести программное обеспечение за 18 месяцев.Поскольку Джон Брант является первоначальным разработчиком браузера для рефакторинга и комплекта компилятора SmaCC, вы вряд ли сможете двигаться так быстро.

Многие из моих пользователей переезжают в Vista, которая может запустить приложение в режиме совместимости или могут иметь проблемы с GPF в зависимости от того, как их компьютер настроен их ИТ -отделом, поэтому я должен выполнять некоторое обслуживание в приложении.Мне интересно, стоит ли мне прыгнуть в более знакомый стек.

Если вы не делаете что-то нестандартное, приложения D7 должны нормально работать в Vista.

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

Простого ответа нет, но имейте в виду, что вариант языка Delphi.net предназначен для среды выполнения .net и что разные языки в .net могут тесно взаимодействовать.

Вы можете попробовать скомпилировать его в Delphi.Net, разбивая его на разные сборки, а затем конвертируя сборки вручную одну за другой.Reflector может помочь в обратном проектировании скомпилированного кода в скелет кода C# - эквивалент, но без комментариев, имен внутренних переменных и т. д.

С другой стороны, Delphi.net может подойти для этого проекта.

Но если у вас нет хорошего набора тестов (думаю, что нет, учитывая современное состояние Delphi 7), вы будете вносить ошибки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top