![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Код:
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); // запускаем |