Доброго времени суток уважаемые форумчане!
Пишу программу, которая имея 10 потоков должна осуществлять парсинг сайтов.
Собственно, она это вроде делает. Но возникает несколько вопросов. Прошу помочь
Например, вот этот кусочек:
TIdHTTP *httpBrowse = new TIdHTTP(NULL);
try {
httpBrowse->Get(resultetiveStroka);
String Result = httpBrowse->Response->ResponseText;
String PoleRec_5 = "PoleRec_5=" + Result + ";";
String PoleRec_6 = "PoleRec_6=Получен;";
String PoleRec_7 = "PoleRec_7=4;";
String stResult_ThT = tempText + tempURL + PoleRec_2 +
PoleRec_3 + PoleRec_7 + PoleRec_4 +
PoleRec_5 + PoleRec_6;
if (oneg_T) {
if (numberText == 0) {
MasivOneGlav->Add(resultetiveStroka);
}
}
*stResult_Th = stResult_ThT;
SendMessage((HWND)ResultFormThread_T, WM_HANDLE_THREAD_M2, 0, (LPARAM)stResult_Th);
Должен передавать информацию о найденной ссылке. Таких кусочков несколько.
Так вот вопрос, почему SendMessage в данном случае иногда возвращает абракадабру?
PostMessage выдает нормально. Но, использовать PostMessage почему-то не получается, если требуемых к проверке сайтов очень много. Максимум 100 проверит и все. Ничего более программа не делает.
Код в главной форме:
void __fastcall TGlav_Form::HANDLE_THREAD_M2(TMessage &S_Message)
{
String forError;
try {
String stResult = *(String *)S_Message.LParam;
delete (String *)S_Message.LParam;
//Парсинг строки
std::string stdLineNT(AnsiString(stResult).c_str());
std::string stdownerNT = "numberText=";
int jNT = stdLineNT.find(stdownerNT);
AnsiString itogovaNT = "";
char *lastsymbolNT = AnsiString(stResult).c_str();
char *skobkaNT = ";";
int nnNT = strlen(lastsymbolNT);
for (int i = jNT + 11; i
if (lastsymbolNT[i] != *skobkaNT) {
itogovaNT = itogovaNT + lastsymbolNT[i];
}
else break;
}
...
Заполняется далее VirtualTreeView