Sign in Join
Wiki copytemporary

Code Conversion Guide/ru

Deutsch · English · Español · Français · Português · Slovenčina · Русский · 日本語

Портирование кода из Delphi на FreePascal/Lazarus

Добавьте в начало модуля следующую строчку:

pascal
 {$ifdef FPC}{$mode delphi}{$endif}

FPC поддерживает синтаксис Delphi, но, по-умолчанию, использует использует свой собственный fpc. Lazarus, по-умолчанию использует синтаксис objfpc для нового проекта. Указанная выше строчка указывает, что при компиляции данного модуля необходимо использовать синтаксис Delphi.

Если модулей очень много, то проще переключить синтаксис для всего проекта:

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

pascal
 -Mdelphi

если вы используете Lazarus, поменяйте свойство проекта:

pascal
(????????) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
(??????) ???????????? -> ?????????????????? ??????????????... -> ?????????????????? ?????????????????????? -> ?????????????????? -> ?????????? ???????????????????? -> Delphi

Использование Delphi синтаксиса поможет избежать "непонятных" ошибок компилятора, таком коде как:

pascal
 var
   NE : TNotifyEvent;
 
   procedure TForm1.Notify(Sender: TObject);
   begin
     // do something
   end;
  
   ...
   begin
     NE := Form1.Notify; // без использования Delphi синтаксиса, строчка вызывает ошибку
 
     // для синтаксиса FPC, строчка должна выглядеть так:
     // NE := @Form1.Notify;
   end.

Использование синтаксиса Delphi при компиляции с помощью FPC, позволяет компилировать одни и те же модули с помощью обоих компиляторов (FPC/Delphi) без дополнительных исправлений.


From the Free Pascal wiki, page "Code Conversion Guide/ru", as it stood on 2019-08-02 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.