• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Synchronize в C++ Builder 2006

  • Автор темы Parabellum762
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Parabellum762

есть программа, на C++Builder 6 работает как часы. Перевожу её на 2006 - нужно кардинально поменять интерфейс.
Всё отлично, но в новой версии борланд поменял синтаксис (или не только синтаксис? :) ) Synchronize вызовов.
У меня раньше было написано так:

main.cpp:
int TMainForm::Function1(int arg)
{
// что-то делается
}
void TMainForm::MainForm()
{
CommPort->Function1 = Function1;
}

commport.cpp
void __fastcall TCommThread::Execute()
{
Synchronize(FuncCall1);

}
void TCommThread::FuncCall1(void)
{
if(Function1)
Function1(Var1);
}

commport.h
int (__closure *Function1)(int Arg);
int Var1;

Загрузил проект в 2006 - при компилировании выскаивает ошибка (на строку Synchronize(FuncCall1); )

Could mot find a match for 'TThread::Synchronize(void)'

Читал хелп, там сказано что в синхронизу надо передавать аргументом класс TThreadMethod.
Что за класс, с чем его жевать - разбираться абсолютно неохота... может, кто уже это делал, и у него есть готовый пример?...
 
P

Parabellum762

Всё Ок, победил я эту ерунду.

нужно было только написать Synchronize(TThreadMethod)&Function1);
 
K

kot_

Всё Ок, победил я эту ерунду.

нужно было только написать Synchronize(TThreadMethod)&Function1);
Говорят, явное приведение типов указателей - это хороший стиль программирования. Не знаю как на счет стиля - но огромное количество проблем отпадает сразу.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!