Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > СКАЧАТЬ


Автор: Artemon 26.2.2006, 10:20
1) Как скачать файл из инета, зная прямую ссылку на него?
2) Как скачать страницу, зная ее адрес?
3) Как Получить HTML код страницы, зная ее адрес.

Господа модераторы простите за несколько вопросов сразу, но по отдельности для каждого вопроса - создавать тему - неразумно.

Автор: _hunter 27.2.2006, 11:48
берем TIdHTTP, вызываем его метод Get() и получаем ответ на все три вопроса smile

Автор: Rickert 23.10.2006, 04:06
_hunter, а стандартными средствами того же MFC?

Автор: Grom 23.10.2006, 10:23
Artemon, 
Код

TStringList *sl = new TStringList();

sl->Add("Login=123");
sl->Add("Password=321");

Memo1->Text=IdHTTP1->Post("https://ya.ru",sl);

//дальше перекодирование KOI->WIN1251
AnsiString S,N,C,SKoi,SWin;

SKoi="__ёАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя";
SWin="ёЁTюабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
int k;
S=Memo1->Text; //Строка WIN
for(int j=1; j<=S.Length(); j++)
{
 C=S[j];
 k=AnsiPos(C,SKoi);
 if(k==0)
 N+=S[j];
   else
   N+=SWin[k];
}

Memo1->Text=N;

Автор: _hunter 23.10.2006, 11:00
Rickert, не совсем понятно при чем тут билдер...
в MFC для этого есть wininet. в частности функции InternetOpen, InternetConnect, HttpOpenRequest, HttpSendRequest и InternetReadFile 

Автор: CLIPSA 12.12.2006, 22:07
Cкачать файл это понятно, допустим так:
Код

TFileStream* fs = new TFileStream("файл.rar", fmCreate);
IdHTTP1->Get(URL, fs);


А как сделать чтоб ТPrgressBar отображал процесс закачки ?  smile 

Автор: witex 13.12.2006, 02:39
что бы прогресс бар показывал прогрес! то вначале кода делаеться запрос, выдаётьс информаци о размере файла!
и потом вычислаешь количество скачаных бай в процентаках! 

Автор: Bima 13.12.2006, 06:39
witex  а как сделать запрос???

Автор: witex 13.12.2006, 07:50
В разделе сети обсуждалось, и не раз!

Автор: Bima 13.12.2006, 09:47
Поиском прошелся по форуму, ничего не нашел.
Может прямую ссылку дадите? Или лучше популярно объясните, чем отделываться стандартными фразами.
Кстати, я тему специально создавал для этого (она была раньше этой), так вот желающих ответить что-то не видно.
http://forum.vingrad.ru/s/e95eae96bb26a7d9c25de1c8274d5583/topic-126761/kw-%F0%E0%E7%EC%E5%F0-%F4%E0%E9%EB%E0-%F1%E5%F0%E2%E5%F0%E5.html

Автор: _hunter 13.12.2006, 11:57
Bima, ты бы приписал чем этот размер получать хочеш
если индейцами: http://forum.vingrad.ru/topic-109724.html
если WinInet: http://forum.vingrad.ru/topic-100580.html
в чем проблема -- непонятно...

Автор: codelord 13.12.2006, 13:44
если на форме уже есть Indy то кидаем такую ф-ю (в нее есстественно url) , и узнаем размер в батах
Код

int GetInternetFileSize(String url)
{
 int size;
 TIdHTTP *idHTTP = new TIdHTTP(idHTTP);
 idHTTP->Head(url);
 size = idHTTP->Response->ContentLength;
 delete(idHTTP);
 return size;
}


Автор: Bima 13.12.2006, 14:40
Если бы смотрели мою тему, то поняли бы, что Indy мне не нужно. Не работает этот компонент с моим корпаративным прокси.
а пример WinInet на дельфях написан smile

Автор: _hunter 13.12.2006, 15:16
Цитата(Bima @  13.12.2006,  14:40 Найти цитируемый пост)
Если бы смотрели мою тему, то поняли бы, что Indy мне не нужно

именно на этот случай я и привел вторую ссылку.

Цитата(Bima @  13.12.2006,  14:40 Найти цитируемый пост)
а пример WinInet на дельфях написан

и что? api оно и на бейсике аpi...

Автор: Bima 14.12.2006, 08:27
возможно, но преобразовывать незнакомые функции запарится можно.
Как я и думал, ничего не выходит smile. Постить здесь больше не буду, перехожу в свою тему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)