Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скачивание файла через HTTP FTP


abcdef ©   (2004-06-23 11:27:00) 

Использую процедуру для скачивания фалов с сервера:

function tform1.GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
  Result:=False;
  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG,
        nil, nil, 0);
  try
     hURL := InternetOpenURL(hSession,
     PChar(fileURL),nil,0,0,0);
     try
        AssignFile(f, FileName);
        Rewrite(f,1);
        repeat
           InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
           BlockWrite(f, Buffer, BufferLen);
           until BufferLen = 0;
        CloseFile(f);
        Result:=True;
     finally
     InternetCloseHandle(hURL)
     end
  finally
  InternetCloseHandle(hSession)
  end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if GetInetFile(Edit1.text,Edit2.Text) then
ShowMessage('Process was compliate!')
else
ShowMessage('Download error!');
end;

Но она не работает, программа даже не коннектится к серваку, а на строчке BlockWrite(f, Buffer, BufferLen); вылетает ошибка IO error, как заставить процедуру работать и еще прицепить к ней прогресс?


Alaman   (2004-08-23 23:50:00) [1]

Я пользуюсь примерно такой же процедурой. И у меня работает. Качает файлы по заданному URL. Перед запуском программы связь с интернет уже есть?


McZim   (2004-06-28 12:07:00) [2]

попробуй для начала просто установить соединение, а уж потом добиваться прогресса :))). Для коннекта могу посоветовать поработать с сокетами то-есть явно указать соединение через нужный тебе протокол.


Наверх

Титульная страница Поиск, карта сайта Написать письмо