Могу ли я преобразовать проект C ++ в Delphi? - PullRequest
1 голос
/ 04 ноября 2011

Есть ли способ взять старый проект Borland C ++ (v6) и преобразовать его в Delphi (v7, или, может быть, XE, если это поможет, но предпочтительно D7)?скомпилируйте Паскаль, но не наоборот.В любом случае я хочу передать проект кому-то, кто не знает C ++, но знает Delphi для его расширения.

Я не хочу сохранять какой-либо старый код C ++, просто преобразовать все в Delphi -вручную, если я должен.

Надеюсь, ты сможешь сэкономить мне время ...

Ответы [ 2 ]

5 голосов
/ 04 ноября 2011

Автоматическое преобразование? NO. Если вы боитесь сделать все это самостоятельно, но в любом случае хотите это сделать, тогда да, я могу подтвердить для вас, что серебряных пуль нет, и вам придется делать все вручную.

На данный момент, если вы хотите сохранить некоторый код C ++, я бы порекомендовал вам сделать это:

  1. Пользовательский интерфейс может быть встроен в C ++ с помощью C ++ Builder, а модель (логический код) может оставаться C ++, а также может быть встроен в C ++ Builder.

  2. Если вы хотите переписать пользовательский интерфейс в delphi, не составит труда загрузить его на части C ++ (которые будут скомпилированы в библиотеку DLL или BPL) и вызывать их во время выполнения.

Обратите внимание, что загрузка и вызов кода C ++ из приложений Delphi не сложны, и что C ++ Builder и Delphi - это, по сути, две разновидности одного и того же, поскольку C ++ Builder на самом деле является просто способом написания вашего приложения на C ++ при использовании Delphi / pascal UI Framework (VCL) внизу.

Итак, рассмотрим либо C ++ Builder (часть RAD Studio), либо гибрид Delphi + C ++, так как полное переписывание нетривиального приложения займет очень много времени. Но да, вы можете переписать что-нибудь во что-нибудь еще, если у вас будет достаточно времени. Но вы действительно хотите?

Если ваша конечная цель на 100% чистая Delphi, но вы хотели сначала выполнить частичное преобразование, а затем завершить преобразование позже, вы можете сделать это поэтапно, если хотите. Ссылка в некоторых частях C ++, загрузка их из DLL или даже статическая ссылка на файлы .obj в ваше приложение delphi.

Кажется, вы настроены против C ++. Я давно ненавижу C ++. Если это твоя сделка, я понимаю.

Но давайте не будем торопиться; Может быть не очень сложно преобразовать старую кодовую базу библиотеки Borland C ++ OWL в современную кодовую базу Visual C ++ с использованием MFC / ATL, хотя, ИМХО, MFC / ATL - дерьмо. Учтите также, что если вам нужно портировать на QT / C ++ или wxWidgets / C ++ (вы можете пойти кроссплатформенно и получить версию, которая работает на Mac и Linux именно так!). Существует так много возможностей для пользовательского интерфейса, оставаясь на C ++, и это, безусловно, будет проще, чем переписать все вручную на совершенно другом языке (Pascal или Python, или C # или Java, действительно, все те же усилия) Столько, сколько нужно, чтобы написать все это в первую очередь!). Я люблю паскаль, и я предпочитаю его C ++ около 100 раз. Во всяком случае, я слишком склонен в пользу Delphi. Но полное переписывание практически никогда не бывает практичным, и АВТОКОНВЕРСИИ также несбыточная мечта. Современный C ++ на самом деле довольно приятный язык. Зачем переписывать код?

1 голос
/ 13 августа 2014

Недавно мы оказались в такой же ситуации: множество устаревших приложений C ++ Builder, для конвертации всего этого вручную потребуются годы.

Итак, я написал небольшой Perl-скрипт, который очень помогает при конвертации,Это не 100%, это было бы невозможно, но это делает большую часть конверсии для вас.Это бесплатно скачать и использовать любым способом, который вы хотите.Посмотрите здесь: http://copycat.fr/wordpress/porting-old-cbuilder-software-to-new-versions/

...