Имя процедуры как параметр

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

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

Сообщение sapsan_work » 22.07.2005 18:48:29

При передаче имени процедуры как параметра возникает ошибка:
wrong number of paameters specified

=======================================
program project1;

{$mode objfpc}{$H+}

uses
Classes
{ add your units here };

type
TtdCompareFunc = function (aData1, aData2: pointer): integer;

function CompareSpritesForDraw(aData1, aData2: pointer): Integer;
begin
end;//TEngineDisplay.CompareSpritesForDraw

function TDMergeSort(const aFirst,
aLast: integer;
aList: TList;
aCompare: TtdCompareFunc): Boolean;
begin
end;

var
List: TList;
begin

TDMergeSort(0, 10, List, CompareSpritesForDraw);

end.
=======================================
Если же заремить "{$mode objfpc}{$H+}", то компиляция проходит без ошибок. При том, что совместимость с Делфи включена в опциях компилятора... :blink:

Это повторяется и в фрипаскале 2.0 и в лазарусах Lazarus-0.9.7-20050607-win32.exe и Lazarus-0.9.9-20050722-win32.exe ...
Сейчас качаю официальный 0.9.8.

В то же время в большём проекте этот финт приводит к тому, что Лазарус не понимает, что такое class

Я с фрипаскалем недавно работаю... Подскажите что крутить.
sapsan_work
 

Сообщение sapsan_work » 22.07.2005 19:28:37

Изменил с {$mode objfpc} на {$mode Delphi} и всё уже компилируется. :)

Кто-нибудь знает в чём разница?
sapsan_work
 

Сообщение Сергей Смирнов » 22.07.2005 19:40:57

Для {$mode objfpc} надо вот так:

Код: Выделить всё
     TDMergeSort(0, 10, List, @CompareSpritesForDraw);


ЗЫ: Очень рекомендую оформлять исходники с помощью тега "code" (это кнопочка с синей решеткой). Так отступы сохраняются.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru