|
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315
|
||||||
Найдите ошибки10.01.2016, 17:13. Показов 2133. Ответов 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
Найдите ошибки найдите ошибки Найдите ошибки Найдите ошибки!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|