![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Thread [D6, Win2k]
Alibaba © (2003-12-31 16:12:00)С наступающим!
Такой вопрос.
В своем проекте (без потока)описываю тип:
type
TUpLoad = (ulFilials, ulResult);
описал переменную:
var
UpLoadToExcel: array[TUpLoad] of procedure;
в разделе INITIALIZATION установил:
UpLoadToExcel[ulFilials]:=SaveExcel;
UpLoadToExcel[ulResult]:=FormExcel;
SaveExcel и FormExcel - это процедуры.
Все работает супер.
В проекте добавляю поток
TMainExcel = class(TThread)
public
UpLoadToExcel: array[TUpLoad] of procedure;
procedure SaveExcel;
procedure FormExcel;
end;
в разделе INITIALIZATION пытаюсь установить:
UpLoadToExcel[ulFilials]:=SaveExcel;
UpLoadToExcel[ulResult]:=FormExcel;
Не получается, пишет:
Incompatible types: 'regular procedure and method pointer'
Что я делаю не так?
Ihor Osov'yak (2003-12-31 19:27:00) [1]У Вас SaveExcel и FormExcel не процедуры, а методы. (вормальное отличие процедуры и метода в том, что последний неявно получает еще один параметр (кроме продекларированных) - указатель на инстанцию класса).
Попробуйте написать не
var
UpLoadToExcel: array[TUpLoad] of procedure;
а
var
UpLoadToExcel: array[TUpLoad] of procedure of object;
Компилятор пропустит, а вот подойдет ли такая замена в вашем случае - это уже вопрос к Вам.
Удачи в Новом году. С Наступающим.