Delphi как скомпилировать под linux

Компиляция Delphi.

Прошу совета. Есть исходники программы, написанной на Delphi. http://freeship-plus.hotmail.ru/Freeship3.0%2b_Delphi_source.rar Вопрос: можно ли это скомпилировать под Linux? Если можно, то как? Спасибо.

Re: Компиляция Delphi.

Возможно, Kylix тебе поможет

Re: Компиляция Delphi.

А Lazarus или как-то так его. Это не оно?

Re: Компиляция Delphi.

Ха. запусти Kylix хоть на одном современном дистрибутиве.

Re: Компиляция Delphi.

Нельзя.
Только если полностью с нуля написать заново.

Re: Компиляция Delphi.

> Ха. запусти Kylix хоть на одном современном дистрибутиве.

На моем RedHat Linux 8 все летает. ЧЯДНТ?

Re: Компиляция Delphi.

Вопрос: можно ли это скомпилировать под Linux? Если можно, то как? Спасибо.

Прям сразу скомпилировать скорее всего вряд ли. А вот портировать реально. fpc в руки с его IDE под названием lazarus. Синтаксис похож. Повозится все равно нужно будет не мало. Но вполне реально.

Re: Компиляция Delphi.

ох-ох-ох. в лоб, значит, никак.. жаль. Всем большое спасибо!

Re: Компиляция Delphi.

Не опускай руки 😉 попробуй в fpc/lazarus. Если там написано без жесткой привязки к винапи и без кучи грязных хаков то работы будет не много.

Re: Компиляция Delphi.

Re: Компиляция Delphi.

да не в руках дело, а в голове. я не программист, поэтому вообще не представляю, откуда копать.

Re: Компиляция Delphi.

>это дальнейшее развитие программы со свободным исходным кодом FREE!ship v2.6 по лицензии GNU GPL. FREE!ship Plus предназначена для полного параметрического анализа ходкости и пропульсивных качеств судна и других расчетов гидродинамики судов и подводных аппаратов. FREE!ship Plus позволяет конструктору полностью смоделировать и проанализировать состояние равновесия комплекса корпус-рули-кили-двигатели-движители на разных режимах работы с учетом условий эксплуатации судна.

видимо человеку и правда для дела, по теме можно скомпилить где-нить с помощью delphi и пускать через wine, может даже заработает

Re: Компиляция Delphi.

там есть готовая софтина под винду, она под вайном-то идет, но.. хотелось без костылей:)

Re: Компиляция Delphi.

видимо человеку и правда для дела, по теме можно скомпилить где-нить с помощью delphi и пускать через wine, может даже заработает

Да сам 7й делфи в вайне работает как родной!

Re: Компиляция Delphi.

Лучше посоветуйте ему какой-нить конвертер сорцов с паскаля в java. Должен же такой быть, с C++ в java вроде был/есть

Re: Компиляция Delphi.

>fpc в руки с его IDE под названием lazarus. Синтаксис похож. Повозится все равно нужно будет не мало. Но вполне реально.
А насколько он вообще готов к использованию? Не будет ли такого, что в процессе переноса выявится какой-то баг lararus’а, не позволяющий доделать работу и получить в результате нормально работающую программу?

И еще: он работает на всех системах примерно одинаково или, например, на оффтопике/линукс/. лучше?
// у меня похожая задача :/

Re: Компиляция Delphi.

И еще: он работает на всех системах примерно одинаково или, например, на оффтопике/линукс/. лучше?
// у меня похожая задача :/

anonymous ну примерно одинаково на всех. Но штука в том что на fpc/lazarus можно как кроссплатформенно так и конкретно под систему с хаками под конкретную ось. Короче все зависит от желания и задач

Re: Компиляция Delphi.

О! нарыл из дельфи в цедиез http://www.netcoole.com/delphi2cs.htm А дальше под моно запустит и . PROFIT!! Или не?

Re: Компиляция Delphi.

А как там с багами? Нет ли чего-то «этакого» с теми же визуальными компонентами?

Читайте также:  Иллюстрированный самоучитель по linux

Re: Компиляция Delphi.

Re: Компиляция Delphi.

Скорее всего эти все генераторы сделают нечитаемые неподдерживаемый код да ещё и криво работающий

Re: Компиляция Delphi.

А как там с багами? Нет ли чего-то «этакого» с теми же визуальными компонентами?

Re: Компиляция Delphi.

> Должен же такой быть, с C++ в java вроде был/есть

Хотелось бы увидеть boost::spirit и blitz++, переконвертированные в java )

Re: Компиляция Delphi.

>можно ли это скомпилировать под Linux?

Без переписывания — едва ли, т.к. там есть вызов функций win api.

Но можно запускать программы windows через wine.

Re: Компиляция Delphi.

>А насколько он вообще готов к использованию?

С нуля — вполне. Для портирования — не айс. Самому надо парочку старых проектов портировать, но по лени и не особой нужности (под вайном вполне идет) жду допила некоторых компонентов.

>И еще: он работает на всех системах примерно одинаково

Не совсем. На офсайте где-то была сравнительная таблица по тулкитам. Т.е. для gtk2 и winapi несколько отличаются по возможностям.

>Не будет ли такого, что в процессе переноса выявится какой-то баг lararus’а, не позволяющий доделать работу и получить в результате нормально работающую программу?

Если есть время на написание нужных компонентов — то не будет )

Re: Компиляция Delphi.

Почитал исходники. Да, вот поэтому Дельфи и не любят. Из-за таких быдлокодеров. Писали обезьяны?

Источник

Linux Application Development

RAD Studio allows you to develop applications for the target Linux platform. Using RAD Studio installed on Windows machine, you can create a 64-bit Linux application and deploy it to the Linux machine. Developing Linux applications is similar to creating Android apps in RAD Studio. However, for Linux, you cannot create the visual VCL and FireMonkey applications. Here is the list of apps that are available for the Linux platform:

  • Console Application
  • EMS Package (RAD Server)
  • DataSnap
  • DataSnap WebBroker
  • WebBroker
  • Dynamic-link Libraries
  • DUnitX Project

Contents

Prerequisites

To develop Linux applications, you need to have the RAD Studio installed on the Windows PC as well as a machine with the Linux platform (can be a virtual machine).

Preparing Your Linux Development Environment

To prepare your development system (PC) and Linux machine for application development with RAD Studio:

Installing Development Packages

To install the development packages on Ubuntu:

  1. Right-click your desktop and select Open Terminal.
  2. To upgrade the packages you have already installed , type sudo apt update && sudo apt upgrade && sudo apt dist-upgrade in the terminal.
  3. Type your user password and press Enter
  4. Wait until prompted to agree to the package upgrade operation. Type Y and press Enter
  5. Wait until the package upgrade operation is complete. It may take a few minutes to complete.
  6. To add the development packages, type sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 in the terminal.
  7. Type your user password and press Enter
  8. Wait until prompted to agree to the package installation operation. Type Y and press Enter
  9. Wait until the pacjage installation operation is complete. It may take a few minutes to complete.

To install the development packages on Red Hat:

  1. Right-click your desktop and select Open Terminal.
  2. Type yum groupinstall ‘Development Tools’ in the terminal.
  3. Press Enter and wait until the package installation operation is complete. It may take a few minutes to complete.

Preparing Your Linux Machine

To create Linux applications, you need to add a virtual machine PAServer:

1. Find the LinuxPAServer21.0.tar.gz file in the following location: C:\Program Files (x86)\Embarcadero\Studio\21.0\PAServer\LinuxPAServer21.0.tar.gz 2. Unpack the LinuxPAServer21.0.tar.gz file.

To use the System.zLib unit on Red Hat:

1. Install the zLib-devel library to your RHEL machine with the following command: sudo yum install zlib-devel 2. Update the local SDK cache.

To use the System.zLib unit on Ubuntu:

1. Install the zLib-devel library to your Ubuntu machine with the following command: sudo apt-get install zlib1g-dev 2. Update the local SDK cache.

Creating a Connection Profile

  1. Right-click the folder where you have unpacked the LinuxPAServer21.0.tar.gz file, and then click Open in Terminal.
  2. Enter ./paserver in terminal. Then, press Enter.
  3. On the Tools > Options > Environment Options > Connection Profile Manager page, click the Add button. The Create a Connection Profile wizard opens.
  4. On the Profile information page, enter the following:
    • In the Profile name field, enter the needed name.
    • In the Platform field, click the 64-bit Linux platform.
    • Click Next.
  5. On the Remote machine information page, enter the following:
    • In the Remote machine field, enter the IP address or Machine name.
    • Click Test Connection to check if the values are valid.
  6. Click Finish.
Читайте также:  Print screen mac под windows

Adding the Installed SDK to RAD Studio

  1. On the Tools > Options > Environment Options > SDK Manager page, click the Add button.
  2. In the Add a New SDK dialog, enter the following:
    • In the Select a platform field, click 64-bit Linux.
    • In the Select a profile to connect, select a created profile from the drop-down list.
    • In the Select an SDK version field, the name of the SDK that you just installed will automatically appear. If you have not installed SDK previously, you can do it on this step. If you have already installed SDK, move on to the next step.

Running PAServer on Linux machine

To run the PAServer on your Linux machine:

  • Open the terminal, and then run PAServer in the terminal.

Источник

Приложения Delphi в Linux и доступ к базам данным MongoDB

С выходом RAD Studio 10.2, включающей компилятор Delphi for Linux, появилась возможность создания на Delphi серверных нативных приложений для работы в среде Linux. Многие коммерческие и промышленные системы все чаще используют в качестве серверов вычислительные системы под управлением различных версий и редакций Linux — популярной, производительной и значительно более экономичной операционной системы широко распространенной на множестве облачных платформ и практически в любых центрах обработки данных.

Многие Web-сайты и многозвенные приложения работают на Linux-серверах и обеспечивают одновременный доступ множества пользователей к хранимой на сервере или в распределенных системах информации, которая, в подавляющем числе случаев, хранится под управлением какой-то СУБД.

Библиотеки и компоненты Delphi для работы с базами данных позволяют быстро и в визуальном режиме создавать множество вариантов самостоятельных приложений, WEB- и REST-сервисов, встраиваемых модулей для промышленных WEB-серверов и серверов приложений, в том числе, Datasnap или RAD Server, активно работающие с любыми из обширного списка поддерживаемых СУБД.

За последние годы документо-ориентированная NoSQL СУБД MongoDB добилась огромной популярности и получила широкое распространение именно на серверах под управлением Linux. В силу особенностей Linux здесь MongoDB работает производительнее, лучше настраивается и масштабируется.

На обзорных вебинарах и семинаре по RAD Studio 10.2 я уже показывал примеры реализации серверных приложений Linux, работающих с данными из MySQL. В самом простом случае нужно всего лишь добавить компонент TFDConnection, настроить его для связи с сервером БД, указав соответствующие параметры-свойства, а затем с помощью TFDQuery ввести нужный запрос и выполнить его. Остается только выдать\напечатать данные, полученные после выполнения запроса в нужной форме. Невероятно, но самым сложным является настройка драйверов доступа к СУБД, в данном случае MySQL.

Теперь я бы хотел рассказать, как реализовать простейшую программу для Linux-сервера, обрабатывающую данные из MongoDB. Несмотря на очевидную простоту реализации, стоит обратить внимание на характерные особенности работы с MongoDB.

Для этого примера я буду использовать установленный на моей VirtualBox VM с Ubuntu Server 16.04 отдельный сервер MongoDB v3.4. Как установить и настроить сервер MongoDB в Ubuntu Linux подробно описано в статье Установка InterBase и MongoDB в Linux (Ubuntu server) в этом блоге. Запуск демона MongoDB выполняется командой

Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-78-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Могут быть обновлены 0 пакетов. 0 обновлений касаются безопасности системы. asovtsov@ubuntu16srv:

$ sudo service mongod start [sudo] пароль для asovtsov: asovtsov@ubuntu16srv:

Кстати, для удобства переноса модулей в Ubuntu я пользуюсь утилитой WinSCP и PuTTY-терминалом для SSH-соединения с Linux.

В этом примере мы будем работать с базой данных из примеров работы с MongoDB в FireDAC , которые поставляются вместе с RAD Studio или Delphi 10.2. Это база данных (database) ‘test’ и коллекция ‘restaurants’, которая содержит более 25000 записей о Нью-Йоркских ресторанах, с привязкой по районам. Если ваш MongoDB на Linux еще не содержит такой базы данных, ее можно создать и заполнить прямо из Windows — открыть пример «C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Database\FireDAC\Samples\DBMS Specific\MongoDB\Restaurants\Mongo_Restaurants.dproj», собрать и запустить его. Первая кнопка ‘LoadData’ создаст и заполнит нужную БД.

Читайте также:  Как переключать языки linux mint

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

  • ‘Count of restaurants grouped by borough’ — подсчет количества ресторанов в каждом районе
  • ‘Count of Brazilian restaurants in Queens grouped by zip-code’ — Подсчет количества ресторанов с бразильской кухней в районе Queens, с группировкой по почтовому индексу

Главный модуль приложения выглядит так:

program linuxMongo; <$APPTYPE CONSOLE> <$R *.res>uses System.SysUtils, uLinuxMongoDM in ‘uLinuxMongoDM.pas’ ; begin try < TODO -oUser -cConsole Main : Insert code here >AggregateData(); Readln; except on E: Exception do Writeln(E.ClassName, ‘: ‘, E.Message); end; end.

Вся магия работы с данными заключена в вызове процедуры AggregateData(); которая описана в стандартном TDatamodule в модуле uLinuxMongoDM.

Датамодуль устроен тоже достаточно просто, однако есть специфика работы с MongoDB.

unit uLinuxMongoDM; interface uses System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.UI.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MongoDB, FireDAC.Phys.MongoDBDef, System.Rtti, System.JSON.Types, System.JSON.Readers, System.JSON.BSON, System.JSON.Builders, FireDAC.Phys.MongoDBWrapper, FireDAC.ConsoleUI.Wait; const DBsrvAddr = ‘192.168.56.101’; type Tfdm = class(TDataModule) FDConnection1: TFDConnection; FDPhysMongoDriverLink1: TFDPhysMongoDriverLink; procedure DataModuleCreate(Sender: TObject); private < Private declarations >FEnv: TMongoEnv; FCon: TMongoConnection; procedure DumpCursor(ACrs: IMongoCursor; caption: string); public < Public declarations >procedure DataGetAggregates(); end; var fdm: Tfdm; procedure AggregateData(); implementation <%CLASSGROUP 'System.Classes.TPersistent'> <$R *.dfm>uses System.Diagnostics, FireDAC.Stan.Util; procedure AggregateData(); var DataModule1: Tfdm; begin DataModule1 := Tfdm.Create(nil); DataModule1.DataGetAggregates; DataModule1.Free; end; procedure Tfdm.DataGetAggregates; var oCrs: IMongoCursor; begin oCrs := FCon[‘test’][‘restaurants’].Aggregate().Group.Add(‘_id’, ‘$borough’) .BeginObject(‘count’).Add(‘$sum’, 1).EndObject.&End; DumpCursor(oCrs, ‘Count of restaurants grouped by borough’); oCrs := FCon[‘test’][‘restaurants’].Aggregate().Match.Add(‘borough’, ‘Queens’) .Add(‘cuisine’, ‘Brazilian’).&End.Group.Add(‘_id’, ‘$address.zipcode’) .BeginObject(‘count’).Add(‘$sum’, 1).EndObject.&End; DumpCursor(oCrs,’Count of Brazilian restaurants in Queens grouped by zip-code’); end; procedure Tfdm.DataModuleCreate(Sender: TObject); begin with FDConnection1.Params do begin Clear; Add(‘DriverID=Mongo’); Add(‘Server=’+DBsrvAddr); end; FDConnection1.Connected := True; FCon := TMongoConnection(FDConnection1.CliObj); FEnv := FCon.Env; end; procedure Tfdm.DumpCursor(ACrs: IMongoCursor; caption: string); begin Writeln(»); Writeln(caption); while ACrs.Next do Writeln(ACrs.Doc.AsJSON); end; end.

Вызываемая процедура AggregateData() управляет созданием и уничтожением объекта датамодуля. Обработчик его события OnCreate обеспечивает задание актуальных параметров соединения с сервером MongoDB, создает и инициализирует необходимые объекты (соединение и контекст) для работы с запросами и курсорами Mongodb. Сами запросы задаются и выполняются в процедуре Tfdm.DataGetAggregates, а процедура Tfdm.DumpCursor(ACrs: IMongoCursor; caption: string) обеспечивает выдачу заголовка запроса и полученных в результате его исполнения данных.

За исключением операторов консольной выдачи, исходный текст этого модуля не содержит изменений по сравнению с аналогичным для платформы Windows — фактически, это один и тот же код.

Укажем Linux64, как целевую платформу, и можно компилировать.

Чтобы Delphi автоматически переносил и запускал скомпилированный двоичный модуль, нужно в окне терминала Linux запустить PAServer, необходимый, кроме того, для выполнения отладки программ на Linux.

/PAServer-19.0/paserver Platform Assistant Server Version 10.0.1.23 Copyright (c) 2009-2017 Embarcadero Technologies, Inc. Connection Profile password : Starting Platform Assistant Server on port 64211 Type ? for available commands >

Если теперь собрать приложение и запустить его в Linux, то получим ошибку! Необходимо установить и настроить клиентские драйвера и библиотеки MongoDB.

В этом месте я совершил небольшую ошибку. Чтобы не повторять ее, рекомендую следовать указаниям документации: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Connect_to_MongoDB_Database_(FireDAC), раздел Client Software.

Дело в том, что работа FireDAC пока настроена на работу с драйвером mongoc от MongoDB версии 3.0. В состав дистрибутива Ubuntu 16.04 этот драйвер уже был включен. Моя ошибка заключалась в том, что я скачал, собрал и установил более современную версию драйвера 1.6.3. Переход на эту версию драйвера будет сделан в ближайшем обновлении (см. опубликованный RoadMap по RAD Studio). Пришлось «откатываться» на требуемый вариант.

Следуйте указанным в документации инструкциям и выполните в окне терминала Linux:

sudo apt-get install libmongoc-1.0-0 sudo ln -s /usr/lib/x86_64-linux-gnu/libmongoc-1.0.so.0.0 /usr/lib/x86_64-linux-gnu/libmongoc-1.0.so sudo ln -s /usr/lib/x86_64-linux-gnu/libbson-1.0.so.0.0 /usr/lib/x86_64-linux-gnu/libbson-1.0.so

Вот теперь можно запускать проект на выполнение!

Источник

Оцените статью