Difference between revisions of "Code Conversion Guide/ru"

From Lazarus wiki
Jump to navigationJump to search
 
Line 4: Line 4:
  
 
'''Добавьте в начало модуля следующую строчку:'''
 
'''Добавьте в начало модуля следующую строчку:'''
{$ifdef FPC}{$mode delphi}{$endif}
+
<syntaxhighlight lang=pascal> {$ifdef FPC}{$mode delphi}{$endif}</syntaxhighlight>
  
 
FPC поддерживает синтаксис Delphi, но, по-умолчанию, использует использует свой собственный ''fpc''. Lazarus, по-умолчанию использует синтаксис ''objfpc'' для нового проекта.
 
FPC поддерживает синтаксис Delphi, но, по-умолчанию, использует использует свой собственный ''fpc''. Lazarus, по-умолчанию использует синтаксис ''objfpc'' для нового проекта.
Line 20: Line 20:
 
Использование Delphi синтаксиса поможет избежать "непонятных" ошибок компилятора, таком коде как:
 
Использование Delphi синтаксиса поможет избежать "непонятных" ошибок компилятора, таком коде как:
  
var
+
<syntaxhighlight lang=pascal> var
 
   NE : TNotifyEvent;
 
   NE : TNotifyEvent;
 
   
 
   
Line 34: Line 34:
 
     // для синтаксиса FPC, строчка должна выглядеть так:
 
     // для синтаксиса FPC, строчка должна выглядеть так:
 
     // NE := @Form1.Notify;
 
     // NE := @Form1.Notify;
   end.
+
   end.</syntaxhighlight>
  
 
Использование синтаксиса Delphi при компиляции с помощью FPC, позволяет компилировать одни и те же модули с помощью обоих компиляторов (FPC/Delphi) без дополнительных исправлений.
 
Использование синтаксиса Delphi при компиляции с помощью FPC, позволяет компилировать одни и те же модули с помощью обоих компиляторов (FPC/Delphi) без дополнительных исправлений.

Latest revision as of 06:51, 2 August 2019

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) português (pt) русский (ru) slovenčina (sk)

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

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

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

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

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

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

 -Mdelphi

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

(англ) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
(рус) Проект -> Параметры проекта... -> Параметры компилятора -> Обработка -> Режим синтаксиса -> Delphi

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

 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) без дополнительных исправлений.