Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 16:35   #1
Sti.k
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 14
По умолчанию Undeclared identifier: 'reference'

Цитата:
type
TRefProc = reference to procedure;

implementation

function Thread( const Proc: TRefProc ): THandle;
function Run( const Proc: TRefProc ): Integer; stdcall;
begin
Proc;
Result := 0;
end;
begin
CreateThread( nil, 0, @Run, PPointer( @Proc )^, 0, Result );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Done: THandle;
begin
Done := CreateEvent( nil, true, false, nil );
try
Thread( procedure
begin
Sleep( 2000 );
SetEvent( Done );
end );
WaitForSingleObject( Done, INFINITE );
finally
CloseHandle( Done );
end;
end;
Нашел такую вот конструкцию, при компиляции вываливается ошибка:
[Error] Unit1.pas(110): Undeclared identifier: 'reference'
Не пойму в чем проблема.
Sti.k вне форума Ответить с цитированием
Старый 05.04.2012, 18:31   #2
RinatV
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 27
По умолчанию

type
TRefProc = reference to procedure;

видимо прога была написана на более старших версиях Дельфи, хотя на них я не игрался.

может быть прокатит такая переделка

Код:
type
TRefProc = {reference to} procedure;

implementation

function Thread( const Proc: TRefProc ): THandle;
function Run( const Proc: TRefProc ): Integer; stdcall;
begin
Proc;
Result := 0;
end;
begin
CreateThread( nil, 0, @Run, PPointer( @Proc )^, 0, Result );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Done: THandle;

procedure temp;
begin
Sleep( 2000 );
SetEvent( Done );
end;


begin
Done := CreateEvent( nil, true, false, nil );
try
Thread( @temp {procedure
begin
Sleep( 2000 );
SetEvent( Done );
end} );
WaitForSingleObject( Done, INFINITE );
finally
CloseHandle( Done );
end;
end;
курсивом удалить, жирным добавить. Хотя не очень уверен что будет работать.
RinatV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
undeclared identifier eatlant Общие вопросы Delphi 1 03.05.2011 23:12
'cout' : undeclared identifier Alt_Shift Помощь студентам 10 15.04.2011 07:54
Undeclared identifier: 'curCaps' xrenomx Общие вопросы Delphi 12 06.02.2011 18:20
Undeclared identifier. Neroaz Помощь студентам 4 07.04.2010 20:29
TIdMultiPartFormDataStream undeclared identifier celovec Работа с сетью в Delphi 15 08.08.2007 14:03