|
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315
|
||||||
Найдите ошибки10.01.2016, 17:13. Показов 2300. Ответов 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 | |
|
Найдите ошибки найдите ошибки Найдите ошибки Найдите ошибки!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|