Показать сообщение отдельно
Старый 25.04.2005, 13:37     # 18
Dragon31337
Advanced Member
 
Аватар для Dragon31337
 
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490

Dragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царстве
Сделал класс поток. В нем есть функция синхронизации, котрая должна обновлять кепшн на форме. Функция потока вызывает функцию, которая как параметр - указатель на функцию харнится вв ее свойствах.
typedef void (*MyFunc)(AnsiString);
class TUpdThread : public TThread
{
private:
protected:
void __fastcall Execute();
void __fastcall UpdateCaption();
void __fastcall GetRegistryVals();
public:
__fastcall TUpdThread(bool CreateSuspended);
void __fastcall SetUpdProc(MyFunc NewUpdProc);
};

void __fastcall TUpdThread::SetUpdProc(MyFunc NewUpdProc){
UpdateFunc = NewUpdProc;
}

void __fastcall TUpdThread::UpdateCaption(){
UpdateFunc(Message);
Sleep(1);
}

У формы сделал функцию:
__fastcall TMainForm::SetCaption(AnsiString Value){
Report->Caption = Value;
}

Но опять встает та же проблема:
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
TUpdThread *UpdateThread = new TUpdThread(true);
UpdateThread->SetUpdProc(MainForm->SetCaption);
// UpdateThread->Resume;
Application->Run();

не могу я этот метод там указывать как параметр эту функцию передать, говорит, что еще класса нет =(

ТАК! Вписал #include <formunit.h>, ошибку не выдает, но!
Теперь ему не нравится вот что:
Cannot convert 'void (* (_closure )(AnsiString))(AnsiString)' to 'void (*)(AnsiString)'
Dragon31337 вне форума