Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример кода, который скачает файл с сайта 
:(
    Опции темы
Nappster
Дата 7.6.2008, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.2.2007
Где: Город герой Москв а

Репутация: нет
Всего: нет



Подскажите мне пожалуйста, примерчик кода, который скачает  файл с удаленного компа, например:

в edit ввожу http://www.somenet.com/file_to_download.zip далее жму кнопку Button и файл сохраняется на диск.

Спасибо!
PM MAIL WWW   Вверх
586
Дата 7.6.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Код
#include <urlmon.h>
#pragma comment (lib, "urlmon.lib")    // $(BCB)\lib\psdk

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HRESULT hr = URLDownloadToFile(0, "http://www.somenet.com/file_to_download.zip", "C:\\file_to_download.zip", 0, 0);
    if(FAILED(hr)) {
        ShowMessage(SysErrorMessage(hr));
    }
}

$(BCB)\lib\psdk пропиши здесь: http://forum.vingrad.ru/act-Attach/type/post/id-1227241.html
PM   Вверх
Rrader
  Дата 7.6.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 13
Всего: 191



Nappster, если хочешь больше контроля, то вот примерчик:
Код

//---------------------------------------------------------------------------
#include <vcl.h>
#include <WinInet.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma comment(lib, "wininet.lib")
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}

class WebThread : public TThread
{
private:
    AnsiString FURL;
    AnsiString FFileName;
    void __fastcall UpdateMethod()
    {
        ShowMessage("Done!");
        return;
    }
protected:
    void __fastcall Execute();
public:
    __fastcall WebThread(bool CreateSuspended)
        :TThread(CreateSuspended)
    {
    }
    __property AnsiString URL = {read=FURL, write=FURL};
    __property AnsiString FileName = {read=FFileName, write=FFileName};
};

void __fastcall WebThread::Execute()
{
    // Session
    HINTERNET FSession = InternetOpen("Dummy", INTERNET_OPEN_TYPE_PRECONFIG,
      NULL, NULL, 0);
    // Error
    if (!FSession) return;

    HINTERNET FURL = InternetOpenUrl(FSession, URL.c_str(), NULL, 0,
      INTERNET_FLAG_RELOAD, 0);
    // Error
    if (!FURL) {
        InternetCloseHandle(FSession);
        return;
    }
    // Set Pointer 
    InternetSetFilePointer(FURL, 0, NULL, FILE_BEGIN, 0);
    TFileStream *FStream = new TFileStream(FileName, fmCreate);
    __try
    {
       DWORD BytesRead;
       char Buf[1024];
       do{
            if (InternetReadFile(FURL, Buf, sizeof(Buf) - 1, &BytesRead)){
                FStream->WriteBuffer(Buf, BytesRead);
            }
       }while (BytesRead != 0);
    }
    __finally
    {
        delete FStream;
        InternetCloseHandle(FSession);
        InternetCloseHandle(FURL);
    }
    Synchronize(&UpdateMethod);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    WebThread *Thread = new WebThread(true);
    Thread->FileName = "C:\\Black.png";
    Thread->URL = "http://wmsdk.com/imgs/Black.png";
    Thread->FreeOnTerminate = true;
    Thread->Resume();
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Rrader - 7.6.2008, 11:25


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
586
Дата 7.6.2008, 11:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(Rrader @  7.6.2008,  11:29 Найти цитируемый пост)
class WebThread : public TThread
{
private:
    char *FURL;
    char *FFileName;
    void __fastcall UpdateMethod()
    {
        ShowMessage("Done!");        
    }
protected:
    void __fastcall Execute();
public:
    __fastcall WebThread(bool CreateSuspended)
        :TThread(CreateSuspended)
    {
    }
    __property char* URL = {read=FURL, write=FURL};
    __property char* FileName = {read=FFileName, write=FFileName};
};

Опасный код. Особенно, если это будет указатель на String().c_str() или буфер в стеке. Замени на String.

Это сообщение отредактировал(а) 586 - 7.6.2008, 11:05
PM   Вверх
Rrader
  Дата 7.6.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 13
Всего: 191



586, заменил на AnsiString. Так правильнее, безусловно. И логичнее.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Nappster
Дата 7.6.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.2.2007
Где: Город герой Москв а

Репутация: нет
Всего: нет



Спасибо большое!

Буду пробовать smile 
PM MAIL WWW   Вверх
RDC
  Дата 8.1.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



Код

#include <urlmon.h>
#pragma comment (lib, "urlmon.lib")    // $(BCB)\lib\psdk
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HRESULT hr = URLDownloadToFile(0, "http://www.somenet.com/file_to_download.zip", "C:\\file_to_download.zip", 0, 0);
    if(FAILED(hr)) {
        ShowMessage(SysErrorMessage(hr));
    }
}


Если использовать этот код то программа подвисает на время скачивания файла. Можно ли это исправить? 
--------------------
Живопись
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1010 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.