Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
C API + C++ Builder 5 (Ярослав) 29/01/2002 - 20:58:23
      Re: C API + C++ Builder 5 (vitek) 30/01/2002 - 05:28:58
      Re: C API + C++ Builder 5 (Ярослав) 11/02/2002 - 15:46:08

> Original message text:
> From: Ярослав - 29/01/2002 - 20:58:23
> Subject:C API + C++ Builder 5
> -----------------
> Работаю с C API и поймал такой глюк: при отправке запроса через mysql_query в цикле функция срабатывает три раза, после третьего следующая за ней функция API Windows не срабатывает, поток уничтожается, освобождается 16 кБ оперативной памяти. Что это вообще может быть? Некорректно сделана баблиотека или сама функция? Или проблема на сервере? В коде вроде как ошибок нет.
> Подробности: цикл находится во вторичном потоке программы, ОС Windows NT WorkStation 4.0, MySQL 3.23
> Помогите пожалуйста любым советом.
>


From: Ярослав - 11/02/2002 - 15:46:08
Subject:C API + C++ Builder 5
-----------------
Код программы

do
{
ZeroMemory(buf,sizeof(buf));
if(WaitForSingleObject(ovr.hEvent,INFINITE)==WAIT_OBJECT_0)
{
ResetEvent(ovr.hEvent);
S=AnsiString(buf);
if (S.Pos("OUTGOING")!=0)
{
Start=S.SubString(24,8);
Length=S.SubString(35,8);
NumA=S.SubString(4,2);
NumB=S.SubString(45,20);
Input="Íåò";
Str="insert into "+CurrentTable+"(Start,Length,NumA,NumB,Input) values ('"+Start+"','"+Length+"','"+NumA+"','"+NumB+"','"+Input+"')";
Qwe=Str.c_str();
c=MysqlQuery(mysql,Qwe);
if (c!=0)
{
char *Err=MysqlError(mysql);
ShowMessage(Err);
return;
};
};
}
else
{
ShowMessage("Îøèáêà ïðè ñ÷èòûâàíèè äàííûõ ñ ÑÎÌ-ïîðòà");
/* Îáðàáîòêà îøèáêè */
}
if (ReadFile(port,buf,buf_size,&bc,&ovr)==false)
{AnsiString Error=SysErrorMessage(GetLastError());
if (GetLastError()==ERROR_IO_PENDING)
{
}
else
{
Application->MessageBox("Àñèíõðîííàÿ îïåðàöèÿ íå ñòàðòîâàëà: íåâåðíûé êîä îøèáêè","Îøèáêà",MB_ICONSTOP);
Application->MessageBox(Error.c_str(),"Îøèáêà",MB_ICONSTOP);
ExitProcess(1);
};
}
else
{
Application->MessageBox("Àñèíõðîííàÿ îïåðàöèÿ íå ñòàðòîâàëà","Îøèáêà",MB_ICONSTOP);
ExitProcess(1);
};
}
while(ExitCode==false);

Этот код выполняется во вторичном потоке. С СОМ-порта снимаются данные и заносяться в базу через сервер. В принципе, я это победил - вынес mysql_query в отдельную функцию с параметрами структуры типа mysql и самого запроса const char* , и заработало, но интересно, что ты думаешь по этому поводу. Напиши пожалуйста, что случалось с ним у тебя при использовании API, может что-то повторяется.

Ярослав.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
1829



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |