FILE *in;
DWORD ResumePos=0, BufferLen, SumSize=0;
HINTERNET hSession, hURL;
char Buffer[1024];
bool err;
in=fopen(edFile->Text.c_str(),"a+");
fseek(in,0,2);
nado=true;
hSession=InternetOpen(ParamStr(0).c_str(),PRE_CONFIG_INTERNET_ACCESS,NULL,NULL,0);
// hURL не равен нулю, функция InternetOpenUrl не работает
hURL=InternetOpenUrl(hSession,edURL->Text.c_str(),NULL,0,0,0);
if(!hURL)
ShowMessage("");
InternetQueryDataAvailable(hURL,&SumSize,0,0);
lbSize->Caption=SumSize;
if(ResumePos)
InternetSetFilePointer(hURL,ResumePos,NULL,0,0);
do {
err=InternetReadFile(hURL,Buffer,sizeof(Buffer),&BufferLen);
if(!err) {
Application->MessageBox("Îøèáêà","Îøèáêà",MB_OK|MB_ICONERROR);
exit(0);
}
fwrite(&Buffer,BufferLen,1,in);
Application->ProcessMessages();
} while(BufferLen!=0 || nado==true);
downloader
Я в непонятках. Пишу качалку файлов. Функция InternetOpenUrl не выполняется.
В смысле hURL равен нулю. GetLastError -- 1 2 0 0 6. Сначала вываливается на if(!hURL), затем на if(!err).
Цитата:
Originally posted by Dmitri
Я в непонятках. Пишу качалку файлов. Функция InternetOpenUrl не выполняется.
Кто что думает насчет этого?
Я в непонятках. Пишу качалку файлов. Функция InternetOpenUrl не выполняется.
Код:
FILE *in;
DWORD ResumePos=0, BufferLen, SumSize=0;
HINTERNET hSession, hURL;
char Buffer[1024];
bool err;
in=fopen(edFile->Text.c_str(),"a+");
fseek(in,0,2);
nado=true;
hSession=InternetOpen(ParamStr(0).c_str(),PRE_CONFIG_INTERNET_ACCESS,NULL,NULL,0);
// hURL не равен нулю, функция InternetOpenUrl не работает
hURL=InternetOpenUrl(hSession,edURL->Text.c_str(),NULL,0,0,0);
if(!hURL)
ShowMessage("");
InternetQueryDataAvailable(hURL,&SumSize,0,0);
lbSize->Caption=SumSize;
if(ResumePos)
InternetSetFilePointer(hURL,ResumePos,NULL,0,0);
do {
err=InternetReadFile(hURL,Buffer,sizeof(Buffer),&BufferLen);
if(!err) {
Application->MessageBox("Îøèáêà","Îøèáêà",MB_OK|MB_ICONERROR);
exit(0);
}
fwrite(&Buffer,BufferLen,1,in);
Application->ProcessMessages();
} while(BufferLen!=0 || nado==true);
DWORD ResumePos=0, BufferLen, SumSize=0;
HINTERNET hSession, hURL;
char Buffer[1024];
bool err;
in=fopen(edFile->Text.c_str(),"a+");
fseek(in,0,2);
nado=true;
hSession=InternetOpen(ParamStr(0).c_str(),PRE_CONFIG_INTERNET_ACCESS,NULL,NULL,0);
// hURL не равен нулю, функция InternetOpenUrl не работает
hURL=InternetOpenUrl(hSession,edURL->Text.c_str(),NULL,0,0,0);
if(!hURL)
ShowMessage("");
InternetQueryDataAvailable(hURL,&SumSize,0,0);
lbSize->Caption=SumSize;
if(ResumePos)
InternetSetFilePointer(hURL,ResumePos,NULL,0,0);
do {
err=InternetReadFile(hURL,Buffer,sizeof(Buffer),&BufferLen);
if(!err) {
Application->MessageBox("Îøèáêà","Îøèáêà",MB_OK|MB_ICONERROR);
exit(0);
}
fwrite(&Buffer,BufferLen,1,in);
Application->ProcessMessages();
} while(BufferLen!=0 || nado==true);
Кто что думает насчет этого?
А ты hSession после создания проверяешь? Он то тоже может быть NULL.
И второе - ты уверен что все правильно написал?
если у тебя hURL будет равен NULL - закачка у тебя все равно будет пытаться происходить? Каков тогда смысл проверки if(!hURL)?
NULL, это скорей всего -1, а не ноль.
Если hURL==NULL или GetLastError() вернет код отличный от нуля, тогда ф-ия не выполняется.
NULL он потому и NULL что равен 0. -1 - это INVALID_HANDLE_VALUE.