Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 23:35   #1
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
Радость Скачка файлов с http

ЗдАРов всем...
Скачиваю файлы такой функцией
PHP код:
uses Wininet

function 
GetInetFile(const fileURLFileNameString): boolean;
const 
BufferSize 1024;
var 
hSessionhURLHInternet;
Buffer: array[1..BufferSizeof Byte;
BufferLenDWORD;
fFile;
sAppNamestring;
begin
   Result
:=False;
   
sAppName := ExtractFileName(Application.ExeName);
   
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG,
         
nilnil0);
   try
      
hURL := InternetOpenURL(hSession,
      
PChar(fileURL),nil,0,0,0);
      try
         
AssignFile(fFileName);
         
Rewrite(f,1);
         
repeat
            InternetReadFile
(hURL, @BufferSizeOf(Buffer), BufferLen);
            
BlockWrite(fBufferBufferLen)
         
until BufferLen 0;
         
CloseFile(f);
         
Result:=True;
      finally
      
InternetCloseHandle(hURL)
      
end
   
finally
   
InternetCloseHandle(hSession)
   
end
end

и вызываю скачку
так:
PHP код:
var FileOnNetLocalFileNamestring
begin
   FileOnNet
:='ссыль';
   
LocalFileName:='путь для сохранения и назв. файла'

   if 
GetInetFile(FileOnNet,LocalFileName)=True then
      ShowMessage
('Download successful')
   else
      
ShowMessage('Error in file download'

end
Всё скачивает отлично но беспокоит две вещи
1) как зделать что бы при скачке файла программа не подвисала
2) как зделать ProgressBar скачки файла, что бы в процентах типо
Плиз помогите нужно срочно!
AquaKlaster вне форума Ответить с цитированием
Старый 28.07.2009, 00:08   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Ну вот чуть изменил :

Код:
function GetInetFile(const fileURL, FileName: String; Progress: TProgressBar): 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
      Progress.Max:= SizeOf(Buffer);
      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);
      Progress.Position:= SizeOf(Buffer);
      end
   finally
   InternetCloseHandle(hSession);
   end
end;

Пример:
Код:
if GetInetFile('http://delphi-city.narod.ru/Project1.exe', 'Inet.exe', ProgressBar1)
   then ShowMessage('Скачка завершина');

Последний раз редактировалось uberchel; 28.07.2009 в 00:18.
uberchel вне форума Ответить с цитированием
Старый 28.07.2009, 07:23   #3
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

А если через прокси?


попробовал данный код... получается зацикливание

repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)

и файл растёт растёт и растёт ..т.е. заново и заново пишется.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 28.07.2009 в 07:26.
BARNEY вне форума Ответить с цитированием
Старый 28.07.2009, 11:35   #4
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

А как зделать что бы не зависала программа при закачке?
AquaKlaster вне форума Ответить с цитированием
Старый 28.07.2009, 13:57   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

в поток закачку сделай... отдельно
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 28.07.2009, 16:44   #6
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
в поток закачку сделай... отдельно
пример плиз если можно!
AquaKlaster вне форума Ответить с цитированием
Старый 29.07.2009, 06:46   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Дай работающию функцию сделаю, в поток и выложу весь проект.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 29.07.2009, 15:12   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

А в верху , что не работающая ???
uberchel вне форума Ответить с цитированием
Старый 29.07.2009, 15:57   #9
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
А если через прокси?


попробовал данный код... получается зацикливание

repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)

и файл растёт растёт и растёт ..т.е. заново и заново пишется.
ещё раз....
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 29.07.2009, 16:20   #10
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

А кто говорил о прокси, AquaKlaster -попросил сделать поток, ему и под http нормально, короче не кому не надо через прокси, ну а если и надо то переделать чуть всегда мона )
uberchel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа получения списка файлов директории и изменения атрибутов файлов roma86 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 09.06.2009 09:08
Отправка файлов по HTTP протоколу с помощью MFC Руслантус Общие вопросы C/C++ 0 27.05.2009 19:54
Скачка файлов из инета по очереди koyotfgthispass Работа с сетью в Delphi 17 24.12.2008 17:50
Копирование файлов через http протокол Serega_P Работа с сетью в Delphi 3 06.12.2008 14:35
Работа с ФТП: Скачка файлов Horror Общие вопросы .NET 4 03.03.2008 14:50