![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Помогите исправить. |
|
|
VBA - [решено] Помогите исправить.
|
Пользователь Сообщения: 144 |
В общем имеется исходники программы для вижуала и сама программа, ничего особенного в этой программе нет она просто скачивает файл и ложит его там же где и сама программа. При скачивании она жрёт столько ОЗУ сколько весит сам файл который скачивается в этом и проблема. Можно ли как-нибудь сделать так что бы файл не помещался в память а сразу же скачивался и был рядом с программой ? Подскажите в какую сторону копать ?
|
|
Отправлено: 14:56, 13-10-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата by_gangster:
|
|
Отправлено: 04:55, 06-11-2013 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать ' Получить собственно файл If PathForDownl = "" Then FlName = IO.Path.GetTempPath & IO.Path.GetFileName(fl) Else PathForDownloads = GetMaxPath(PathForDownloads) If IO.Directory.Exists(PathForDownloads) = False Then IO.Directory.CreateDirectory(PathForDownloads) End If FlName = PathForDownloads & "\" & IO.Path.GetFileName(fl) End If If IO.Path.GetFileName(FlName).Split(IO.Path.GetInvalidFileNameChars).Length > 1 Then FlName = IO.Path.GetTempPath & GetUIN() & ".tmp" End If 'Открыть файл ' Поток в файл (объявление) Dim fstr As New System.IO.FileStream(FlName, System.IO.FileMode.OpenOrCreate) Dim dnl_size As Long = 0 'Открытие потока в файл 'fstr = System.IO.File.OpenWrite(FlName) ' Получить асинхронно If WaitForDownload = False Then fstr.Close() thr = New Threading.Thread(AddressOf AsyncDownload) thr.Start(myHttpWebResponse.GetResponseStream) ' Получить синхронно Else FileDownloading = True Dim myStreamReader As New IO.BinaryReader(myHttpWebResponse.GetResponseStream) Dim all As New System.Collections.Generic.List(Of Byte) Do ' Собственно получения порции данных Dim bts() As Byte = myStreamReader.ReadBytes(BufferSize) If bts.Length = 0 Then Exit Do fstr.Seek(0, System.IO.SeekOrigin.End) For Each bytevalue As Byte In bts fstr.WriteByte(bytevalue) fstr.Seek(0, System.IO.SeekOrigin.End) dnl_size = dnl_size + 1 Next 'all.AddRange(bts) ' Вызов события Идет прием данных ReceiveProgressInvoke(dnl_size) Loop 'DownloadSuccess(all) End If ' Функция реализующая поток, который скачивайт файл порциями BufferSize Sub AsyncDownload(ByVal stream As Object) FileDownloading = True Dim myStreamReader As New IO.BinaryReader(stream) Dim all As New System.Collections.Generic.List(Of Byte) Dim fstr As New System.IO.FileStream(FlName, System.IO.FileMode.OpenOrCreate) Dim dnl_size As Long = 0 Do ' Всякие Прерывания и Паузы потока If FileDownloading = False Then DownloadCancelledInvoke() : myStreamReader.Close() : Exit Sub While DownloadPause System.Windows.Forms.Application.DoEvents() If FileDownloading = False Then DownloadCancelledInvoke() : myStreamReader.Close() : Exit Sub End While ' Собственно получения порции данных Dim bts() As Byte = myStreamReader.ReadBytes(BufferSize) If bts.Length = 0 Then Exit Do fstr.Seek(0, System.IO.SeekOrigin.End) For Each bytevalue As Byte In bts fstr.WriteByte(bytevalue) fstr.Seek(0, System.IO.SeekOrigin.End) dnl_size = dnl_size + 1 Next 'all.AddRange(bts) ' Вызов события Идет прием данных ReceiveProgressInvoke(dnl_size) Loop 'DownloadSuccess(all) End Sub |
------- Отправлено: 15:36, 06-11-2013 | #22 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать mrcnn, Спасибо тебе огромное, побольше бы таких людей.
|
Отправлено: 00:10, 07-11-2013 | #23 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать mrcnn,
Проблема в том что когда файл полностью скачался программа просто напросто показывает 100% и не завершает закачку. Выход только один - это закрыть программу. Пробовал раскоментить DownloadSuccess(all) тогда программа в конце просто напросто выдаёт ошибку и всё. Помогите пожалуйста. |
Отправлено: 19:19, 16-12-2013 | #24 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 02:20, 18-12-2013 | #25 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать mrcnn, Спасибо, всё сработало. А ещё скажите как можно сделать что бы после завершения загрузки программа больше не использовала файл. Т.е просто после загрузки файл нельзя открыть (его использует программа), можно только после закрытия программы. Что можно добавить после downloadsuccess2() для закрытия файла программой ?
|
Отправлено: 14:02, 18-12-2013 | #26 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 23:25, 18-12-2013 | #27 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - помогите исправить данную ошибку | simsa | Microsoft Windows 2000/XP | 2 | 26-11-2012 15:50 | |
C/C++ - Помогите исправить ошибки!!!!! | Nastasya | Программирование и базы данных | 2 | 23-05-2011 22:09 | |
Помогите исправить ошибку! | Guest | Хочу все знать | 1 | 15-05-2004 16:55 | |
Помогите исправить ошибку! | Guest | Сетевые технологии | 1 | 12-05-2004 10:11 |
|