Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

закачка файла   Найти похожие ветки 

 
anton773 ©   (2006-07-09 12:31) [0]

Снова здравствуйте! пытаюсь закачать файл с помощью wininet:                                                                                                      ...                                                                   Hinet:= InternetOpen("Mozilla",PRE_CONFIG_INTERNET_ACCESS,nil,nil,0);
Header:= "Accept:*/*";
HUrl:= InternetOpenUrl(Hinet,pchar(Edit1.Text),pchar(Header),StrLen(pchar(Header)),0,0) ;
 if RestartPos > 0 then InternetSetFilePointer(HUrl,RestartPos,nil,0,0);
 InternetQueryDataAvailable(HUrl,Fsize,0,0);
   while (Readlen <> 0)and (stop= false) do
   begin

  InternetReadFile(hurl,@fbuff,SizeOf(fbuff),Readlen);
  fs.WriteBuffer(fbuff,Readlen);    Application.ProcessMessages;                                                                              ...
Соединение устанавливается но закачка не начинается. PS fs это filestream


 
Ketmar ©   (2006-07-09 12:42) [1]

а OpenURL точно отрабатывает? не вредно бы и проверить, что оно там вернуло. а вдруг вовсе 0?


 
anton773 ©   (2006-07-09 13:18) [2]


> а OpenURL точно отрабатывает?

ставлю брейкпонт на InternetReadFile значение Hurl= $CC000C ниже привожу полный код процедуры:procedure TForm2.BitBtn1Click(Sender: TObject);
var
Hinet,HUrl: HINTERNET;
Fsize,Readlen,RestartPos: DWORD;
fbuff: array[1..1024]of Byte;
FS: TFileStream;
Header: string;
fMode: Word;

begin
RestartPos:= 0;
Fsize:= 0;
BitBtn1.Enabled:= false;
BitBtn2.Enabled:=true;
if FileExists(Edit2.Text) then
fMode:= fmOpenReadWrite else
 fMode:= fmCreate;
FS:= TFileStream.Create(Edit2.Text,fMode);
FS.Seek(FS.Size,soFromBeginning);
Hinet:= InternetOpen("Mozilla",PRE_CONFIG_INTERNET_ACCESS,nil,nil,0);
Header:= "Accept:*/*";
HUrl:= InternetOpenUrl(Hinet,pchar(Edit1.Text),pchar(Header),StrLen(pchar(Header)),0,0) ;
 if RestartPos > 0 then InternetSetFilePointer(HUrl,RestartPos,nil,0,0);
 InternetQueryDataAvailable(HUrl,Fsize,0,0);
   while (Readlen <> 0)and (stop= false) do
   begin

  InternetReadFile(hurl,@fbuff,SizeOf(fbuff),Readlen);
  fs.WriteBuffer(fbuff,Readlen);
   Application.ProcessMessages;
  end;
  stop:= false;
  InternetCloseHandle(HUrl);
 InternetCloseHandle(Hinet);
 fs.Free;

end;


 
Ketmar ©   (2006-07-09 13:30) [3]

что-то мне подозрительно всё это. особенно значение HUrl. к сожалению, проверить точно я не в состоянии. %-)


 
anton773 ©   (2006-07-09 13:43) [4]


> подозрительно всё это

а каким должо быть значение Hurl


 
Ketmar ©   (2006-07-09 14:16) [5]

дык говорю же -- не знаю. щаз накидаю примерчик, проверю %-)


 
Ketmar ©   (2006-07-09 14:27) [6]

от это у меня отработало "на ура".
возвращаемые значения, как оказалось, тут пофигу -- главное, чтобы были не nil. %-)


{$APPTYPE CONSOLE}
uses
 Windows, SysUtils, Classes, WinInet;

var
ih, uh: HINTERNET;
hdr: string;
fs: TFileStream;
buf: packed array [0..1023] of Byte;
rd: LongWord;
begin
 ih := InternetOpen("Mozilla", PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);
 hdr := "Accept: */*";
 uh := InternetOpenUrl(ih,
   "http://delphimaster.net/view/6-1152433865/",
   PChar(hdr), Length(hdr), 0, 0);
 fs := TFileStream.Create("$.$", fmCreate);
 repeat
   if not InternetReadFile(uh, @buf[0], SizeOf(buf), rd) then break;
   if rd = 0 then break;
   fs.WriteBuffer(buf[0], rd);
   Write(".");
 until false;
 WriteLn;
 fs.Free();
 InternetCloseHandle(uh);
 InternetCloseHandle(ih);
end.


 
anton773 ©   (2006-07-09 15:41) [7]

Огромное приогромное спасибо!Работает!!!!


 
Ketmar ©   (2006-07-10 00:47) [8]

добавлю, что все возвращаемые значения надо проверять на nil. я этого не делал по прчине лени, однако сие есть неверно. %-)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.05 c
4-1152698912
Oleon
2006-07-12 14:08
2006.11.26
Как пробежаться по всем компьютерам в домене ?


3-1159267453
Climber
2006-09-26 14:44
2006.11.26
BDE &amp; FoxPro


3-1159189214
alsov
2006-09-25 17:00
2006.11.26
Сумма в конце датасета


2-1163061812
yyy111
2006-11-09 11:43
2006.11.26
for i := ...


2-1162811723
Khabibulin
2006-11-06 14:15
2006.11.26
Нарисовать треугольник в Pascal е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский