Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6306
Последний выпуск: 19.06.2015

Написать функцию которая возвращает несколько результатов ?

81K
16 августа 2012 года
cupidigit
6 / / 06.06.2012
Как правильно написать функцию в которой будет работать другая функция, а конкретно ReadFile() вопрос в том как забрать данные из ReadFile() через функцию StartDataRead() в которой вызывается ReadFile() ?

BYTE BufferData1[256];
DWORD BytesLength1;
DWORD BytesRead1;

Код:
bool __fastcall MyThread1::StartDataRead(как передать из функции BufferData1 ?, как передать из функции BytesRead1 ?, как передать в функцию BytesLength1 ?)
{
  OVERLAPPED ReadOL;
  DWORD WFSO;
  //-------------------------------------------------------------------------
  memset(&ReadOL, 0, sizeof(ReadOL));
  ReadOL.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
  if(ReadOL.hEvent == NULL)
  {
    Form1->Memo1->Lines->Add("Ioeaea CreateEvent");
    CloseHandle(HidHandle);
    CloseHandle(ReadOL.hEvent);
    return 0;
  }
  //-------------------------------------------------------------------------
  if(!ReadFile(HidHandle, BufferData1, BytesLength1, &BytesRead1, &ReadOL))
  {
    Form1->Memo1->Lines->Add("Ioeaea aneio?iiiiai ?oaiey ReadFile");
    CloseHandle(HidHandle);
    CloseHandle(ReadOL.hEvent);
    return 0;
  }
  //-------------------------------------------------------------------------
  WFSO = WaitForSingleObject(ReadOL.hEvent, INFINITE);
  if(WFSO == WAIT_OBJECT_0)
  {
    if(!GetOverlappedResult(HidHandle, &ReadOL, 0, 1))
    {
      Form1->Memo1->Lines->Add("?acoeuoao ?oaiey ia iieo?ai GetOverlappedResult");
      CloseHandle(HidHandle);
      CloseHandle(ReadOL.hEvent);
      return 0;
    }
    else
    {
      Form1->Memo1->Lines->Add("?acoeuoao ?oaiey iieo?ai GetOverlappedResult");
    }
  }
  else
  {
    Form1->Memo1->Lines->Add("IOEAEA WaitForSingleObject");
    CloseHandle(HidHandle);
    CloseHandle(ReadOL.hEvent);
    return 0;
  }
  //-------------------------------------------------------------------------
  CloseHandle(ReadOL.hEvent);

  return 1;
}
1
16 августа 2012 года
kot_
7.3K / / 20.01.2000
передавать в функцию либо ссылку либо указатель. читать - передача параметров по ссылке
81K
17 августа 2012 года
cupidigit
6 / / 06.06.2012
Создал еще один поток и написал в нем функцию ту что привел выше и теперь хочу ее вызвать в основном потоке но не получается , вопросы: 1. где будет исполнятся функция, в потоке где она определена или в том где вызвал? 2. как все написать правильно чтобы вообще эту функцию можно было вызывать в основном потоке и чтобы она передавала параметры из второго потока? 3. не могу разобраться с синхронизацией где вызывать функцию синхронизации и что в ней указывать?
7
28 августа 2012 года
@pixo $oft
3.4K / / 20.09.2006
=D
Функция описывается не в потоке,а в коде!Вызывать её можно из любого потока,просто будет выполнен соответствующий код в контексте вызывающего потока
81K
28 августа 2012 года
cupidigit
6 / / 06.06.2012
Спасибо за разъяснения, теперь понятно.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог