Sign in Join
Wiki copytemporary

Code Conversion Guide/ru: what changed

Revision 3 to 4. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Портирование кода из Delphi на FreePascal/Lazarus
22
33**Добавьте в начало модуля следующую строчку:**
44
55``` pascal
66 {$ifdef FPC}{$mode delphi}{$endif}
77```
88
99FPC поддерживает синтаксис Delphi, но, по-умолчанию, использует использует свой собственный *fpc*. Lazarus, по-умолчанию использует синтаксис *objfpc* для нового проекта. Указанная выше строчка указывает, что при компиляции данного модуля необходимо использовать синтаксис Delphi.
1010
1111Если модулей очень много, то проще переключить синтаксис для всего проекта:
1212
1313если вы используете только FPC компилятор, используя параметр командной строки:
1414
15-```
15+```text
1616 -Mdelphi
1717```
1818
1919если вы используете Lazarus, поменяйте свойство проекта:
2020
21-```
21+```text
2222(англ) Project -> Project Options... -> Compiler Options -> Parsing -> Syntax mode -> Delphi.
2323(рус) Проект -> Параметры проекта... -> Параметры компилятора -> Обработка -> Режим синтаксиса -> Delphi
2424```
2525
2626Использование Delphi синтаксиса поможет избежать "непонятных" ошибок компилятора, таком коде как:
2727
2828``` pascal
2929 var
3030 NE : TNotifyEvent;
3131
3232 procedure TForm1.Notify(Sender: TObject);
3333 begin
3434 // do something
3535 end;
3636
3737 ...
3838 begin
3939 NE := Form1.Notify; // без использования Delphi синтаксиса, строчка вызывает ошибку
4040
4141 // для синтаксиса FPC, строчка должна выглядеть так:
4242 // NE := @Form1.Notify;
4343 end.
4444```
4545
4646Использование синтаксиса Delphi при компиляции с помощью FPC, позволяет компилировать одни и те же модули с помощью обоих компиляторов (FPC/Delphi) без дополнительных исправлений.
4747
4848---
4949*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](/wiki-contact).*
5050Category: Russian (unfinished translation)

Back to history