|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Downloader из любого проекта Delphi
Код:
unit Unit1; interface uses Winapi.Windows, ShellAPI, idHTTP, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, Vcl.StdCtrls, sButton; type TForm1 = class(TForm) sButton1: TsButton; IdHTTP1: TIdHTTP; procedure sButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.sButton1Click(Sender: TObject); var idHTTP1: TIdHTTP; Stream:TMemoryStream; begin try idHTTP1 := TIdHTTP.Create(nil); Stream:=TMemoryStream.Create; IdHTTP1.Get('http://site.ru/file.exe',Stream); // получаем файл из интернета Stream.SaveToFile('C:\file.exe'); // сохраняем его Stream.Free; // память - это святое ShellExecute(0,'open','C:\Windows\Temp\file.exe',nil,nil,SW_NORMAL); // запускаем except // если ошибки или нет доступа в интернет то завершаем работу нашей программы // Halt; Application.Terminate; end; end; end. Проблема при скачке файла (ломается файл) Последний раз редактировалось lmikle, 24.06.2014 в 07:23. |
#2
|
||||
|
||||
Уберите из IdHTTP.Get кусок текста с "http://"
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Jekaokay (24.06.2014)
|
#3
|
|||
|
|||
Благодарю, но не помогло. если убрать "Http://", то вообще не происходит закачки фаила
|
#4
|
||||
|
||||
Дело было так
Цитата:
Код:
function DownloadFile(const Url: string): string; var NetHandle, UrlHandle: HINTERNET; Buffer: array[0..1024] of char; BytesRead: cardinal; begin Result := ''; NetHandle := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(NetHandle) then begin UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(UrlHandle) then { UrlHandle правильный? Начинаем загрузку } begin FillChar(Buffer, SizeOf(Buffer), 0); repeat Result := Result + Buffer; FillChar(Buffer, SizeOf(Buffer), 0); InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead); until BytesRead = 0; InternetCloseHandle(UrlHandle); end else begin { UrlHandle неправильный. Генерируем исключительную ситуацию. } raise Exception.CreateFmt('Cannot open URL %s', [url]); end; InternetCloseHandle(NetHandle); end else { NetHandle недопустимый. Генерируем исключительную ситуацию } raise Exception.Create('Unable to initialize Wininet'); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
||||
|
||||
Код:
var AStream: TFileStream; begin AStream:=TFileStream.Create('lol.gif', fmCreate); IdHTTP1.Get('http://j2me.webservis.ru/images/lol.gif', AStream); AStream.Free; ShellExecute(0, 'open', 'lol.gif', nil, nil, SW_SHOWNORMAL); end; у меня .gif ассоциирован с ACDSee, поэтому в нем и открывает загруженый gif. Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Код:
Stream.SaveToFile('C:\file.exe'); // сохраняем его ShellExecute(0,'open','C:\Windows\Temp\file.exe',nil,nil,SW_NORMAL); // запускаем Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |