Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> InternetReadFile и WriteFile 
V
    Опции темы
Феликс
Дата 6.7.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот попал в просак, удалил свои старые сурсы где всё отлично работало! Теперь даже не знаю в чём ошибка в новой функции! Выручайте!
Код

BOOL CLauncherDlg::FileDownload(CString remoteFileURL,CString updateFileURL, int i) {
    HINTERNET ih;    
    ih = InternetOpen("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);    
    if (ih == NULL) ih = 0;    
    HINTERNET fh, f;
    char fbuff[8*1024];

    fh = InternetOpenUrl(ih, remoteFileURL, NULL, 0, INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_EXISTING_CONNECT, 0);
    if (fh != NULL) {
    f = CreateFile(updateFileURL, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
    do {    
        memset(fbuff, 0, sizeof(fbuff));    
        InternetReadFile(fh, fbuff, sizeof(fbuff), &rFile);    
        WriteFile(f, fbuff, rFile, &dFile, NULL);    
        tFile = tFile + rFile;    
        ULONG FileSSize = atoi(MissingSize(i));
        m_progress.SetPos(tFile*100/FileSSize);
    } while (rFile > 0 );
    Sleep(1000);
    m_progress.SetPos(0);
    CloseHandle(f);    
    InternetCloseHandle(fh);
    InternetCloseHandle(ih);
    return TRUE;
    } else { return FALSE; }
}


Код

BOOL CLauncherDlg::DownloadMissing(int i) {
    remoteURL = RemoteDir + missingFiles.GetAt(i);
    updateURL = missingFiles.GetAt(i);
    CString toAdd;
    toAdd.Format(" *  %s", GetMissingAt(i));
    m_listbox.AddString(toAdd);
    if(FileDownload( remoteURL, updateURL, i)) { return TRUE; } else { return FALSE; }
}

BOOL CLauncherDlg::DownloadDifferent(int i) {
    remoteURL = RemoteDir + differentFiles.GetAt(i);
    updateURL = differentFiles.GetAt(i);
    CString toAdd;
    toAdd.Format(" *  %s", GetDifferentAt(i));
    m_listbox.AddString(toAdd);
    if(FileDownload( remoteURL, updateURL, i)) { return TRUE; } else { return FALSE; }
}

При обращении к ф-ции DownloadMissing ( если файл отсутсвует ) , то файл следовательно загружается без проблем.
Вот при обращении к ф-ции DownloadDifferent ( изменёный файл ), то файл должен загрузится заново переписав старый.
Но вот тут и выскакивает ощибка и переписываются только первые 8*1024 байта.
Раньше работало отлично, но видно чтото в ф-ции я изменил, а что не помню!
Помогите пожалуйста! Заранее спасибо!

Добавлено @ 13:06
I'm Sorry! Проблему нашел! Вылетело из головы, что надо отдельно делать подсчёт размера изменёного файла. 
У меня же в ф-ции идёт подсчёт только для размеров отсутсвуеших файлов.
Может кому пример пригодиться!
А тему можно закрывать! Спасибо за внимание!


Добавлено @ 13:09
P.S: Если у кого есть советы по примерам, то всегда пожалуйста, с удовольствием почитаю!

Это сообщение отредактировал(а) Феликс - 6.7.2007, 13:10
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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