Процедурные типы и делегаты

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Процедурные типы и делегаты

Сообщение Mirage »

FPC не совместим с Delphi по процедурным типам и делегатам (которые ссылки не на просто процедуру, а на метод)?

В Delphi пишу:

Код: Выделить всё

procedure MyClass.MyDelegate(a: Integer);
...
Delegate := MyDelegate


FPC ругается (в режиме objfpc), ему нужно так:

Код: Выделить всё

Delegate := @MyDelegate


Причем опция So помогает - после нее @ не обязателен, зато на все остальное ругаться начинает, т.к. видимо переводится в режим TP.

Без IFDEF'ов никак нельзя чтобы и в Delphi и в FPC компилировалось?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Хм, мне {$mode delphi} помогло избивится от @ и ошибок, вроде, не возникало особо...
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Mirage
это общеизвестная фича
и кстати команда fpc поступила более логично здесь что чётко отделила вызов метода как функции с присвоением значения функцииперменной и взятием ареса метода с последующем занесением его в переменную.
мне синтаксис FPC нравится больше.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Чтоб не париться,под дельфями или fPC собирать :


Код: Выделить всё

Delegate := {$ifdef fpc}@{$endif}MyDelegate;
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Ну я так и делаю. Но мне не нравятся ифдефы на пустом месте.
Насчет -Mdelphi - видимо, я попробую его использовать, но пока че-то ошибок дофига. -Mobjfpc как-то более совместим.

А вообще мне синтаксис FPC тоже больше нравится - как обычно перекомпиляция проекта с помощью FPC выявила немало потенциальных проблем.
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Мда, скомпилировал таки проект (с -Mdelphi), результаты не очень.
Без оптимизаций все ОЧЕНЬ тормозит, с L1 оптимизациями тормозов нет, но есть глюки. С L2 программа вообще не запускается - сразу падает.
Куда копать не совсем понятно.
Ответить