Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
84 / 80 / 6
Регистрация: 11.04.2021
Сообщений: 319
Записей в блоге: 7
.NET 4.x

Обсуждение кода программы для создания и распаковки Zip архивов

28.08.2026, 13:18. Показов 3637. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Готовые решения и полезные коды на Visual Basic .NET (Часть-2)


Sergei Luksha, Код работает, но содержит ряд серьёзных проблем .... от архитектурных до логических ошибок.

Что неправильно или опасно:

(1) Очень плохая проверка завершения записи в Zip

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Do While Not IO.File.Exists(arhoutput)
    ...
Loop
 
Do
    ...
    Try
        Using fs As IO.FileStream = IO.File.Open(arhoutput, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
        End Using
        Exit Do
    Catch
    End Try
Loop
Проблемы этого куска кода... бесконечный цикл... если файл так и не появится или не освободится.

Catch без логирования .... вы не узнаете, почему цикл не завершается.

Проверка доступа на чтение не гарантирует... что CopyHere завершил копирование всех файлов. CopyHere !!! асинхронный !!! ... и файл может быть доступен для чтения, но копирование ещё идёт.


(2) Ложное уведомление... UnZip не ждёт завершения распаковки

VB.NET
1
2
output.CopyHere(input.Items, 4)
Label3.Text = "Файл успешно распакован...!"
CopyHere !!!! асинхронный !!! Вы сразу выводите сообщение об успехе, хотя распаковка может ещё идти.

(3) Переиспользование глобальных переменных

VB.NET
1
2
Dim input As Shell32.Folder
Dim output As Shell32.Folder
В Zip вы пишете:

VB.NET
1
2
input = sh.NameSpace(dirinput)
output = sh.NameSpace(arhoutput)
В UnZip:

VB.NET
1
2
output = sh.NameSpace(dirout)
input = sh.NameSpace(arhinp)
Лучше делать локальные переменные внутри каждого метода... иначе это опасно... если методы вызываются быстро друг за другом... состояния могут перемешаться.

(4) Нет обработки ошибок при работе с Shell
Если путь содержит недопустимые символы или архив повреждён ... будет исключение... которое вы не обрабатываете.

Если файл занят другим процессом... программа упадёт.

(5) Не используется Async / Await
Из-за синхронных вызовов и DoEvents интерфейс будет (зависать) на время операции. DoEvents.... это !!! антипаттерн !!! ошибочный и вредный подход к решению этой задачи
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2026, 13:18
Ответы с готовыми решениями:

Подскажите толковые библиотеки для распаковки ZIP архива
Пробовал распаковать архив сторонней библиотекой Ionic.Zip , пишет ошибку "Could not read file.zip...

Как исправить ошибку распаковки ZIP, связанную с Shell32.dll?
Здравствуйте.Есть код распаковки Zip архива. Private Sub Button1_Click(ByVal sender As...

ZIP архив. Парсинг и редактирование текстового файла, помещенного в архив без распаковки
Добрый день, в зип архиве лежит файл текстовой. Нужно открыть архив, ничего никуда не доставать....

44
bite
 Аватар для I can
5009 / 4817 / 852
Регистрация: 13.04.2015
Сообщений: 10,082
07.09.2026, 20:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от HackerVlad Посмотреть сообщение
почитал вашу критику
Если есть в коде DoEvents, то код автоматически превращается... код превращается... в элегантный говнокод.
1
Вернулся
 Аватар для HackerVlad
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
07.09.2026, 20:04
если честно то мне аж жалко стало Sergei Luksha все на него так набросились

Добавлено через 1 минуту
Цитата Сообщение от I can Посмотреть сообщение
есть в коде DoEvents
да я вкусре что там много не очень хорошего кода, но человек вроде как старался из лучших побуждений и как я понял он не очень разбирается во всём поэтому простительно
2
bite
 Аватар для I can
5009 / 4817 / 852
Регистрация: 13.04.2015
Сообщений: 10,082
07.09.2026, 20:28
Цитата Сообщение от HackerVlad Посмотреть сообщение
человек вроде как старался из лучших побуждений и как я понял он не очень разбирается во всём поэтому простительно
Добрый ты. Но, я надеюсь, что ТС воспримет критику положительно и сделает правильные выводы на будущее.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18409 / 14340 / 5371
Регистрация: 17.03.2014
Сообщений: 29,029
Записей в блоге: 1
08.09.2026, 00:09
Цитата Сообщение от HackerVlad Посмотреть сообщение
а вы жёсткий критик однако, я как почитал вашу критику просто прифигел))))
Это не так. Я белый и пушистый!

Цитата Сообщение от HackerVlad Посмотреть сообщение
хорошо что в моём разделе меня не критикуют)))
Вы уверены что это хорошо?

Цитата Сообщение от I can Посмотреть сообщение
А он туда не заглядывает, не пали контору
Я во все разделы заглядываю
1
Вернулся
 Аватар для HackerVlad
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
10.09.2026, 02:17
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вы уверены что это хорошо?
Ну тут либо The trick'у надоело меня поучать просто либо я слишком хорошо кодить стал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.09.2026, 02:17

Параллельное создание zip архивов на WEB странице останавливается
Не веб-сайте есть страничка "Создать архивы". Жму кнопку, создаются пустые архивы и начинается...

Получить в treeview содержимое всех архивов *.zip в папке
Всем привет. Есть папка. D:\arh\other\ . В ней лежат архивы *.zip. Как можно получить содержимое...

Распаковка архива с именем архива по маске
Всем привет! Понимаю, что тема с архивами уже избитая, но все же есть определенная задача. Прошу...

Код распаковки архива
Помогите пож. с этим кодам: Sub UnZip() Dim sh As New Shell32.Shell() Dim output As...

Неверная кодировка при распаковке zip архива
для распаковки решил воспользоваться не стандартной библиотекой, а библиотекой DotNetZip...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru