ganselo, я придумал так, как вы показали и как есть на дельфи в коде выше.
Код:

// Инициализируем массив вне отдельного потока-----------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
lHash = new TStringList;
lHash->Add("564dfacf47f4d215b76a5eb3770a83d4");
lHash->Add("0045BCBD3047391E47F3B56DC7C7F2F2");
lHash->Add("00636A27AF20104CC13E8DDE7DEE64E7");
lHash->Add("012995DAD105ACEFBF05591271CD2F54");
}
//добавляем новую функцию. Здесь и будет обращение к серверу
DWORD WINAPI QueryThread(LPVOID lpParam)
{
TStringList *post = new TStringList;
TStringStream *response = new TStringStream("");
TStringList *lHash = (TStringList *)lpParam;
for(int i = 0; i < lHash->Count; i++){
post->Clear();
post->Add("chain=" + lHash->Strings[i]);
try{
Form1->HTTPQuery->Post("http://www.virustotal.com/search.html", post, response);
}
catch(EIdHTTPProtocolException &se){
switch(se.ErrorCode){
case 200: //всё ок
break;
case 303:
break; //редирект
case 404: //404 not found
break;
default:
break;
}
}
catch(EIdSocketError &se){
MessageBox(0, se.Message.c_str(), 0, 0);
}
Form1->HTTPQuery->Disconnect();
}
delete post, response, lHash;
}
// Выполнение и обработка-------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool connect = true; // Добавил переменную bool
try{
HTTPQuery->Get("http://www.virustotal.com/search.html");
}
catch(EIdHTTPProtocolException &se){
switch(se.ErrorCode){
case 200: //всё ок
break;
case 303:
break; //редирект
case 404: //404 not found
break;
default:
break;
}
}
catch(EIdSocketError &se){
//если не удалось подключится, то возникнет это исключение
// и bool присваивается false
if(se.LastError == 11001)
connect = false;
}
if(connect){ // Если соединение есть - connect == true, начинаем обработку
HANDLE hThread;
hThread = CreateThread(0, 0, QueryThread, lHash, 0, 0);
if(hThread == INVALID_HANDLE_VALUE){
ShowMessage("Can't create thread");
return;
}
CloseHandle(hThread);
}
else // Если соединения нету - connect == false
MessageBox(0, "Не удалось подключится к удалённому серверу", 0, MB_OK + MB_ICONWARNING);
}
//---------------------------------------------------------------------------
Если где-то что-то я неправильно сделал, лишнее что-то и т.п., поправьте если сможете. Но всё работает.
Цитата ganselo:
if(se.LastError == 11004) »
|
А у меня ошибка
11001 при отсутствии соединения
Код:

Socket Error # 11001 Host not found.