|
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315
|
||||||
Найдите ошибки10.01.2016, 17:13. Показов 2004. Ответов 33
Метки нет (Все метки)
Народ, я для собственного саморазвития начал изучать VB (сказали самый легкий язык)... А вообще я юрист))) Изучаю недавно.
Дошел до изучения массивов и манипуляций с файлами. Написал код, который делит файл на три части, а потом собирает его обратно. Код, вроде бы рабочий. Проверял на файлах различных расширений. НО! Я хочу научиться программировать, хотя бы на средняковом уровне, учитывая, что я учусь сам, поэтому прошу Вас помочь мне найти ошибки в коде, подсказать как его писать правильнее, или указать на то, что в коде лишнее и ни в коем случае так делать нельзя и желательно объяснить почему. Спасибо больше заранее, парни.
0
|
||||||
| 10.01.2016, 17:13 | |
|
Ответы с готовыми решениями:
33
Программа шашки. Реализация ходов. Оцените программу, найдите ошибки Найдите ошибки Найдите ошибки |
|
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315
|
|
| 12.01.2016, 17:51 [ТС] | |
|
0
|
|
|
oh my god
|
|
| 12.01.2016, 18:06 | |
|
Между прочем польза от моей проги очень огромная, это я могу теперь не переживать об ограничениях, даже на здешнем форуме есть ограничения по размеру 10 мб для архивов
и по одному мб для прочего, я могу разбить 400 мб архив на 40 частей, и залить на какойнибудь форум, про киберфорум промолчу
0
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 12.01.2016, 20:50 | |
|
Первая программа для резки файлов на части, которую я видел, была программа LONG для DOS
![]() Вот нашел - 36 кб ![]() http://old-dos.ru/index.php?pa... how&id=495 Добавлено через 3 минуты Хотя вот есть FileSplitter для Win - 21 кб http://www.softportal.com/soft... itter.html
2
|
|
|
|
|||
| 12.01.2016, 22:04 | |||
|
Чем меряемся? Мной написанный Сплиттер "весит" 10 Кб и поддерживает "Drag-And-Drop". И что самое важное, разделяет на части с заданным размером. Согласитесь неудобно разбивать на Х частей, если файл большой, то надо считать, сколько будет "весить" каждая часть.
1
|
|||
|
oh my god
|
|
| 13.01.2016, 05:53 | |
|
Сделал пару исправлений
1. это некорректное условие удаления файлов было If ch1.Value > 0 And ch1.Enabled = 1 Then стало If ch1.Value > 0 And ch1.Enabled = True Then Раньше я думал что выражения ch1.Enabled = 1 и ch1.Enabled = True одинаковые оказываеться нет )) 2. Исправил отображение пустой папки (на картинке исправленное отображение)
0
|
|
|
oh my god
|
||
| 13.01.2016, 07:19 | ||
|
а вот чтоб интерфейс не вис, придёться тогда разделить программу на 2 приложения, первое будет управлять вторым в котором будет чтение-запись, но я не претендую на милионное тиражирование, поэтому не буду ничего менять, в качестве учебного пособия вполне сойдёт
0
|
||
|
|
||
| 13.01.2016, 13:10 | ||
|
И Win API наше всё, работает с некоторыми неудобствами ( отладка в IDE не работает), посмотри работы у The trick, очень хорошо написано.
1
|
||
|
oh my god
|
|
| 13.01.2016, 15:57 | |
|
Ну хорошо, буду знать, воспользуюсь когда буду делать чтото грандиозное
и где потребуется ворочать большие объёмы данных
0
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 13.01.2016, 21:49 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Строки 1-7. Переменные объявлены вне модуля. Значит они будут глобальными в пределах всего модуля. Кликните здесь для просмотра всего текста
Аргументы против: 1. Общая область видимости между Вашими 2 модулями здесь не нужна. 2. Это плохая практика в принципе. 3. Не будет высвобождаться память после заполнения массивов. Решение: Объявить нужные переменные внутри каждой подпрограммы. Отступы правильнее так (на примере Вашего кода: Кликните здесь для просмотра всего текста
Названия переменных можно было и более информативней сделать (прим. moiMASSIV - о назначении массива ничего не говорит.). Сугубо личное мнение. Сам грешу.
Оправдано только для маленькой программы. В более крупной можете сами себя запутать дважды открыв файл, используя тот же ID (или ошибочно предполагать, что он уже свободен). См. код Catstail как правильно.
1) Для OS Vista и выше, по умолчанию, права доступа на запись в корень сис. диска заблокированы для пользователей группы "Администратор" и ниже, если не запускать программы "С повышенными привилегиями". Т.к. в коде у Вас не используется обработчик ошибок, программа закроется с не очень информативным сообщением об ошибке. 2) Не указан модификатор доступа (уже говорили). Добавлю, что если возникнет ситуация, когда другая программа откроет читаемый Вами файл в режиме блокировки на запись, то функция чтения с явным указанием режима доступа увеличит шансы на успешное чтение. Кроме того, это хороший тон указывать явные минимально требуемые права, и к тому же позволит сразу оценить назначение функции для человека, кто читает Ваш исходный код.
1) Неявное использование начального значения: Если по какой-то причине предыдущее значение q будет установлено неверно, получим нарушение логики. 2) Нельзя сразу оценить каким будет начальное значение до тех пор, пока (в Вашем случае) не завершиться предыдущий цикл. Интервалы байтов для разделения файлов лучше рассчитать заранее. 3) Плохой тон использование для инициализации цикла той же переменной, что управляется циклом. К слову, как и изменение вручную этой переменной внутри цикла (просто пример).
в этой точке кода получите ошибку. В идеале конечно проверять размер файла.
И дальше по коду побайтовое чтение через цикл. Как Вы уже (наверное) поняли по выложенным примерам, нет смысла, т.к. можно считать целиком в массив нужное кол-во байт.
Не вижу объявления переменной i в коде. По всей видимости - забыта. Чтобы этого избежать, всегда пишите (особенно для новичков) первой строкой кода директиву:
С обработчиком будет примерно так:
Может привести к неконтролируемым / неявным ошибкам, зацикливаниям, вылету программы. Как правильно, написал выше. Опять же, пример так себе. Нет проверок на размер файла, нет модификатора доступа. В коде для записи из поста № 2 кроме того, основной функционал игнорирует аргумент "Start".
2
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
oh my god
|
||||||
| 15.01.2016, 09:39 | ||||||
|
Одно дело разговоры разговаривать, и совсем другое написать реальную программу
чтобы работала так, как хочет Pro_grammer Теперь программа отображает прогрес-бар в ходе работы, и есть эта пресловутая кнопка отмены более того, когда её жмёшь, отменяются все изменения которые уже были сделанны в папке Теперь уже файл не частями делиться, а килобайтами. тоесть 1 килобайт это 1024 байт если кому интересно. естественно если файл меньше, то кнопка *разделить* будет неактивной также, если предположительное количество частей больше 50, то включится окно с предупреждением, а надо ли вам это ? ... Сначала я хотел сделать с помощью API, но позже когда уже запутался в коде и в конец измотал себя переделками, решил сделать двумя приложениями Вот только форма: Кликните здесь для просмотра всего текста
как я и говорил, в одной программе интерфейс, а в другой чтение-запись работает всё корректно, проверил наверное 100 раз. обмен между приложениями идёт через файлик с одной строчкой общаются примерно так .. -Ready -Ok -Part 1 of 1049 -Part 2 of 1049 ' ' ' -End при считывании можно подсмотреть в дебагере, но у меня собственноручно динамически-создаваемый прогрэс-бар Теперь для работы с большими файлами необязательно морочить себе голову WinApi можно предворительно разделять на читабельные части, и делать что хош
2
|
||||||
|
oh my god
|
|
| 17.01.2016, 11:31 | |
|
Некоторые может подумают а нафига этому человеку это нужно ..
-Ну тоже, какбы не хочется отставать от постоянных жителей форума к томуже, сейчас я особенно ничем не заморочен и честно признаюсь, скучаю по программированию когда долго этим не занимаюсь, всегда узнаю чтото новое именно в процессе творчества, казалось бы что тут особенного но встречаются вещи которые либо совсем не решаемые, либо их решает какойнибудь корпоративный монстр наподобии майкрософта. И темболее интересно попытаться решить очевидную загадку, а всяких загадок в программировании много, попадаются и такие, которые наверное можно решить только через сто лет
0
|
|
| 17.01.2016, 11:31 | |
|
Помогаю со студенческими работами здесь
34
Найдите ошибки найдите ошибки Найдите ошибки Найдите ошибки!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|