Difference between revisions of "Code Conversion Guide/ru"

From Lazarus wiki
Jump to navigationJump to search
m
m
Line 15: Line 15:
 
  (англ) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
 
  (англ) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
 
  (рус) Проект -> Параметры проекта... -> Параметры компилятора -> Обработка -> Режим синтаксиса -> 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.

Revision as of 12:39, 27 August 2010

Портирование кода из 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.