|
Вопрос # 434/ вопрос открыт / |
|
Всем Привет!
Не могу разобраться почему не качает.
Помогите
Приложение: Переключить в обычный режим- s := ExtractUrlFileName(Memo1.Lines.Strings[0]);
- Edit1.Text:= (Memo1.Lines.Strings[0]);
- lStream := TFileStream.Create(DirName+''+s, fmCreate);
- Application.ProcessMessages;
- try
- IDHTTP1.Connect();
- idHTTP1.Get(Edit1.Text, lStream);
- IdHTTP1.Disconnect;
- except
- on EIdHostRequired do begin
- lStream.Free;
-
 |
Вопрос задал: Vit2 (статус: Посетитель)
Вопрос отправлен: 25 марта 2007, 21:55
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: min@y™
C компонентами Indy я не работал, поэтому здесь помочь не могу. Однако, я, давно ещё, ради развлечения и убийства времени написал простенькую программку по закачиванию свежих креативов с udaff.com :). Вот ссылки:
EXE-файл: http://sourceviewer.narod.ru/downloads/udaff32.7z
Исходиники на Delphi:
http://sourceviewer.narod.ru/downloads/udaff32_src.7z
Посмотри, может поможет.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 26 марта 2007, 09:29
|
Ответ #2. Отвечает эксперт: Вадим К
Если вы с https начали качать, то может и не качать. Там ещё один компонент бросать надо.
А так, код вроде жизнеспособный, поэтому, приведите урл, откудова качаете, может он мёртвый или требует кукисов или сесии. во вторых, проверте, а файл действетельно может создастся. Каталог dir должен существовать.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 26 марта 2007, 11:23
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 28; последнее сообщение — 27 марта 2007, 14:44; участников в обсуждении: 2.
Страницы: [1] [2] [Следующая »]
|
Vit2 (статус: Посетитель), 26 марта 2007, 11:59 [#1]:
Всем Привет!
Этот код работает с Delphi 6
try
with idHTTP1 do begin
Application.ProcessMessages;
Get(Edit1.Text, lStream);
end;
IdHTTP1.Disconnect;
Memo1.Lines.Delete(0);
if Memo1.Lines.Count<>0 then
begin
StartButton.Click;
end;
except
on EIdConnClosedGracefully do
lStream.Free;
on E: EIdProtocolReplyError do begin
lStream.Free;
MessageDlg(WideFormat(sError, [E.Message]), mtError, [mbOK], 0);
end;
A Delphi7, BDS2006 не хочет
Выскакивает вот такое сообщение
The requested IPversion Address family is not supported
Делаю
try
IDHTTP1.Connect;
except
Сообщение не выскакивает но и не качает
|
|
Вадим К (статус: Академик), 26 марта 2007, 12:06 [#2]:
дело в том, что в 6 и 7 и 2005 делфи различные версии инди. Код не всегда "легко портируется"
Ну хотя бы адрес приведите, откудова качаете.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вадим К (статус: Академик), 26 марта 2007, 14:31 [#4]:
Только что на 2006 делфи обкатал ваш код.
Строка
StartButton.Click;
Вызвала приступ смеха, так как так непишут. Наиболее коректно - StartButtonOnClick(Sender);
Сам алгоритм рекурсивный тоже порадовал.
Но самое удивительное, что код качает. Файл слит нормально. Вариантов два. Либо в настройках компонента что то перестарались, либо у вас стоит программа (фаервол оутпост к примеру) который делает днс сервер. адрес в кеше левый - портит всю малину
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 15:03 [#5]:
Дайте мне ваш код рабочий,я попробую.
У меня Windows XP SP2 и Касперский 6
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 15:05 [#6]:
А того нет?
The requested IPversion Address family is not supported
|
|
Вадим К (статус: Академик), 26 марта 2007, 15:18 [#7]:
нет. Чудно качает. Перечудили что то в настройках компонента. Создайте новый проект и не настраивайте компонент, добавте ваш код.
З.Ы. Каспер - это ещё та гадость. Чудит такое, что половина нормальных программеров жахается (другая половина пользуется )
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 15:25 [#8]:
Я в настройках компонента ни чего не трогал
|
|
Вадим К (статус: Академик), 26 марта 2007, 15:31 [#9]:
выключаем каспера, потом встроенный брендмауэр. Если сидим через прокси - курим настройки прокси.
Если это не помогает - идём к патологоанатому
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 18:42 [#10]:
Прокси нет
5 минут назад качал сейчас вот
The requested IPversion Address family is not supported
procedure TForm1.Button1Click(Sender: TObject);
var
lStream: TFileStream;
begin
lStream := TFileStream.Create('C:\'+Edit2.Text, fmCreate);
try
with idHTTP1 do begin
Application.ProcessMessages;
Get(Edit1.Text, lStream);
end;
finally
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
try
IDHTTP1.Disconnect;
finally
end;
end;
procedure TForm1.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
Label2.Caption := AStatusText;
end;
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
begin
if AWorkMode = wmRead then
Application.ProcessMessages;
ProgressBar1.Position := AWorkCount;
end;
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Integer);
begin
if AWorkMode = wmRead then
Application.ProcessMessages;
ProgressBar1.Max := AWorkCountMax;
end;
procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
ProgressBar1.Position:= 0;
end;
end.
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 18:44 [#11]:
Одним словом "Дурь"
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 18:46 [#12]:
Брендмауэр и Каспера отключал
|
|
Вадим К (статус: Академик), 26 марта 2007, 18:53 [#13]:
Скорее всего, это проблема dns сервера. И в коде проблем вроде нет.
Попробуйте к серверам обращаться по айпишнику, к примеру
Name: www.pistonsoft.com
Address: 209.216.201.12
Если ошибки будут повторятся, тогда надо будет думать.
З.Ы. У вас не виста и/или IPv6?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 26 марта 2007, 18:54 [#14]:
Каким компонентом можно ещё качать из палитры
BDS2006 ?
|
|
Вадим К (статус: Академик), 26 марта 2007, 19:02 [#15]:
Вы забыли наверное дописать "по HTTP"?
Со стандартными наверное никак. А вот если на тори зайти (www.torry.net) то можно наверное что то и подыскать
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 27 марта 2007, 13:22 [#16]:
Привет!
Я нашол компонент,похож на Indy.
Только не пойму как заставить ProgerssBar работать
Read:Integer;
Total:Integer;
|
|
Вадим К (статус: Академик), 27 марта 2007, 13:27 [#17]:
Я тоже не сильно помогу - написали бы хотя бы название.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Vit2 (статус: Посетитель), 27 марта 2007, 13:35 [#18]:
procedure TRapForm.StartButtonClick(Sender: TObject);
var
RH: TALHTTPResponseHeader;
lStream: TFileStream;
dirName : String;
begin
try
RH:= TALHTTPResponseHeader.Create;
try
lStream := TFileStream.Create(DirName+'\'+s, fmCreate);
try
application.ProcessMessages;
HTTP1.Get(Edit4.Text,lStream,RH);
Finally
HTTP1.Disconnect;
RH.Free;
lStream.Free;
end
except
end;
finally
end;
end;
end;
procedure TRapForm.HTTP1DownloadProgress(sender: TObject; Read,
Total: Integer);
begin
application.ProcessMessages;
Label14.Caption:= BytesToStr (Total);
Label2.Caption:= BytesToStr (Read);
end;
Компонент называется ALWininetHttpClient
|
|
Vit2 (статус: Посетитель), 27 марта 2007, 13:37 [#19]:
Качает нормально,Total,Read показывает.
А вот как прогресс отобразить?
|
|
Вадим К (статус: Академик), 27 марта 2007, 13:42 [#20]:
Это
Label14.Caption:= BytesToStr (Total);
Label2.Caption:= BytesToStr (Read);
Заменить на это
ProgressBar1.Max := Total;
ProgressBar1.Position := Read;
Правда тут есть одна заковырка, большие значение в прогресс бар можно и не затолкать. Но не помню точно, эксперементировать надо.
Галочка "подтверждения прочтения" - вселенское зло.
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|