Hej ;) Chciałbym sobie zrobić programik, który ściąga źródło strony na dysk. Otóż mam listę stron internetowych i liste nazw plików pod jakie ma je zapisać. Ale gdy napiszę to tak, że po naciśnięciu przycisku na formie ma się wykonać pętla w której zapisywane są te strony, cały program staje i trzeba czekać aż się wykona do końca.
Pomyślałem, żeby zrobić to w wątku. Jednak napotkałem problem... w wątku nie zapisuje tych stron! ;/. zapisze pierwszą która jest mała i ma 14KB ale druga co ma już 90 - nie.
kod z wątkiem wygląda mniej wiecej tak:
#include <vcl.h>
#include <urlmon.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
DWORD WINAPI FunkcjaWatku(PVOID pvParam)
{
for(int i = 1; i < Form1->Memo1->Lines->Count; i++)
{
DWORD IdWatku;
AnsiString aFileName = "C:\\" + Form1->Memo2->Lines->Strings[i];
char *cFileName = aFileName.c_str();
AnsiString aURL = Form1->Memo1->Lines->Strings[i];
char *cURL = aURL.c_str();
HRESULT Rezultat;
Rezultat = URLDownloadToFile(0, cURL, cFileName, 0, 0);
}
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD IdWatku;
HANDLE hWatek_1 = CreateThread(NULL, 0, FunkcjaWatku, NULL, 0, &IdWatku);
}
//---------------------------------------------------------------------------
Przy tych większych stronach, zmienna Rezultat wynosi jakąś kosmiczną liczbę -2 miliony coś tam ;p
Dlaczego to nie chce tak działać? co robię źle?