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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 17:51   #1
god5
Катков Кирилл:)
Пользователь
 
Аватар для god5
 
Регистрация: 26.06.2012
Сообщений: 48
По умолчанию работа с idhttp

Использую вот этот код для скачки файлов:

PHP код:
function GetInetFile(const fileURLFileNameStringProgressTProgressBar): 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
      
Progress.Max:= SizeOf(Buffer);
      
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);
      
Progress.Position:= SizeOf(Buffer);
      
end
   
finally
   
InternetCloseHandle(hSession);
   
end
end

PHP код:
if GetInetFile('http://delphi-city.narod.ru/Project1.exe''Inet.exe'ProgressBar1)
   
then ShowMessage('Скачка завершина'); 
все файлы загружает нормально за исключением exe - он то скачивает но размер файла 1 кб! при открытии пишет файл не совместимы с вашей версии windows !
сама винда у меня 7 64x
сборка delphi -XE3 в чем может быть проблемма)?
если что то оформил не так извините на форуме новичок)

Последний раз редактировалось god5; 03.12.2012 в 14:56. Причина: поправка
god5 вне форума Ответить с цитированием
Старый 04.12.2012, 15:58   #2
Rakim4ik
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 26
По умолчанию

Была аналогичная проблема, но только на autoit.
Попробуй его скачивать не в exe, а zinn.
А после скачки менять формат на exe. Естественно программно )
Rakim4ik вне форума Ответить с цитированием
Старый 04.12.2012, 16:27   #3
god5
Катков Кирилл:)
Пользователь
 
Аватар для god5
 
Регистрация: 26.06.2012
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Rakim4ik Посмотреть сообщение
Была аналогичная проблема, но только на autoit.
Попробуй его скачивать не в exe, а zinn.
А после скачки менять формат на exe. Естественно программно )
спасибо)

в принципе сделал)работает) но почему так)? и почему на любой exe !
можешь пожалуйста просто примерчик реализации скачки может че не то делаю)
god5 вне форума Ответить с цитированием
Старый 05.12.2012, 17:30   #4
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

антивирь пробовал отключать?
частенько он "мешается"
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 05.12.2012, 20:49   #5
god5
Катков Кирилл:)
Пользователь
 
Аватар для god5
 
Регистрация: 26.06.2012
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Mifody Посмотреть сообщение
антивирь пробовал отключать?
частенько он "мешается"
да когда работаю в delphi обычно вырубаю ! вот не знаю почему exe не качает!
god5 вне форума Ответить с цитированием
Старый 05.12.2012, 23:09   #6
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

В названии темы "работа с idhttp", в самой теме нету про инди ничего...
Вм нужно только через WinInet?
Delphi_ProGer вне форума Ответить с цитированием
Старый 07.12.2012, 06:47   #7
god5
Катков Кирилл:)
Пользователь
 
Аватар для god5
 
Регистрация: 26.06.2012
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Delphi_ProGer Посмотреть сообщение
В названии темы "работа с idhttp", в самой теме нету про инди ничего...
Вм нужно только через WinInet?
безразницы!
я пробовал и через WinInet и через idhttp ниче не выходит скорее всего исходники левые у меня ) у же 2 недели не могу найти !нужно тупо скачать exe с моего хостинга(сайта) на диск C )
god5 вне форума Ответить с цитированием
Старый 07.12.2012, 07:22   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
function GetInetFile(const fileURL, FileName: String; Progress: TProgressBar): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  DataSize,BufferLen: DWORD;
  Stream:TFileStream;
begin
  Result:=False;
  hSession := InternetOpen(PChar(ExtractFileName(Application.ExeName)), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(fileURL),nil,0,0,0);
    try
      DataSize:= 0;
      BufferLen:= sizeof(DataSize);
      if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER,
        @DataSize,BufferLen,PDWORD(nil)^) then
        begin
          Progress.Max:=DataSize;
          Progress.Position:=Progress.Min;
        end;
      Stream:=TFileStream.Create(FileName,fmCreate);
      try
        repeat
          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
          Stream.WriteBuffer(Buffer, BufferLen);
          Progress.StepBy(BufferLen);
          Application.ProcessMessages;
        until BufferLen = 0;
        Result:=True;
      finally
        Stream.Free;
      end;
    finally
      InternetCloseHandle(hURL);
      Progress.Position:= SizeOf(Buffer);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetInetFile('http://www.rarlab.com/rar/winrar-x64-420ru.exe', 'winrar-x64-420ru.exe', ProgressBar1) then
    ShowMessage('Скачка завершена');
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 07.12.2012, 12:57   #9
god5
Катков Кирилл:)
Пользователь
 
Аватар для god5
 
Регистрация: 26.06.2012
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
Код:
function GetInetFile(const fileURL, FileName: String; Progress: TProgressBar): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  DataSize,BufferLen: DWORD;
  Stream:TFileStream;
begin
  Result:=False;
  hSession := InternetOpen(PChar(ExtractFileName(Application.ExeName)), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(fileURL),nil,0,0,0);
    try
      DataSize:= 0;
      BufferLen:= sizeof(DataSize);
      if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER,
        @DataSize,BufferLen,PDWORD(nil)^) then
        begin
          Progress.Max:=DataSize;
          Progress.Position:=Progress.Min;
        end;
      Stream:=TFileStream.Create(FileName,fmCreate);
      try
        repeat
          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
          Stream.WriteBuffer(Buffer, BufferLen);
          Progress.StepBy(BufferLen);
          Application.ProcessMessages;
        until BufferLen = 0;
        Result:=True;
      finally
        Stream.Free;
      end;
    finally
      InternetCloseHandle(hURL);
      Progress.Position:= SizeOf(Buffer);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetInetFile('http://www.rarlab.com/rar/winrar-x64-420ru.exe', 'winrar-x64-420ru.exe', ProgressBar1) then
    ShowMessage('Скачка завершена');
end;
увы проблемма такая же может из за того что у меня 64 битная 7)
Изображения
Тип файла: jpg 898.jpg (34.7 Кб, 133 просмотров)
god5 вне форума Ответить с цитированием
Старый 07.12.2012, 19:53   #10
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

попробуй в место TFileStream загнать все в TMemoryStream, а в самом конце SaveToFile
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами на http сервере. Sadhacker Работа с сетью в Delphi 1 20.01.2012 14:04
http server,http сервер, проблемы с post реализация на java snajper_ro Общие вопросы по Java, Java SE, Kotlin 1 23.10.2011 14:25
WebBrowser C# работа с HTTP, обработка POST / GET ответов MarselleBelarus C# (си шарп) 0 15.10.2011 21:52
Работа с HTTP из C# Altera PHP 5 23.01.2011 11:50
работа MySQL через HTTP-proxy programmer1988 Работа с сетью в Delphi 2 13.08.2010 20:35