Sign in Join
Wiki copytemporary

Code Conversion Guide/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Code Conversion Guide/ru

OldNewLine
1+## Портирование кода из Delphi на FreePascal/Lazarus
2+
3+**Добавьте в начало модуля следующую строчку:**
4+```
5+{$ifdef FPC}{$mode delphi}{$endif}
6+```
7+
8+FPC поддерживает синтаксис Delphi, но, по-умолчанию, использует использует свой собственный _fpc_. Lazarus, по-умолчанию использует синтаксис _objfpc_ для нового проекта. Указанная выше строчка указывает, что при компиляции данного модуля необходимо использовать синтаксис Delphi.
9+
10+Если модулей очень много, то проще переключить синтаксис для всего проекта:
11+
12+если вы используете только FPC компилятор, используя параметр командной строки:
13+```
14+-Mdelphi
15+```
16+
17+если вы используете Lazarus, поменяйте свойство проекта:
18+```
19+(англ) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
20+ (рус) Проект -> Параметры проекта... -> Параметры компилятора -> Обработка -> Режим синтаксиса -> Delphi
21+```
22+
23+Использование Delphi синтаксиса поможет избежать "непонятных" ошибок компилятора, таком коде как:
24+```
25+var
26+ NE : TNotifyEvent;
27+
28+ procedure TForm1.Notify(Sender: TObject);
29+ begin
30+ // do something
31+ end;
32+
33+ ...
34+ begin
35+ NE := Form1.Notify; // без использования Delphi синтаксиса, строчка вызывает ошибку
36+
37+ // для синтаксиса FPC, строчка должна выглядеть так:
38+ // NE := @Form1.Notify;
39+ end.
40+```
41+
42+Использование синтаксиса Delphi при компиляции с помощью FPC, позволяет компилировать одни и те же модули с помощью обоих компиляторов (FPC/Delphi) без дополнительных исправлений.
43+
44+---
45+*From the Free Pascal wiki, page "Code Conversion Guide/ru", as the Internet Archive kept it on 2025-01-23. 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](/wiki-contact).*

Back to history