Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Создание прибыльного сайта для начинающих" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Интернет для Delphi-программиста 56
Интернет для Delphi программиста.Выпуск : № 56 Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!! ЗАДАТЬ ВОПРОС : Правила
рассылки: Новые вопросы.
Ответы.
Статья: "Нарезка и склейка файлов." http://decoding.narod.ru/practic/cutfile/cutfile.html Для начала определимся с методом решения. Можно воспользоваться процедурами BlockRead и BlockWrite, а можно использовать поток TFileStream. С моей (субъективной) точки зрения, процедуры вроде BlockRead и BlockWrite морально устарели. По этому я, не колеблясь, выбрал второй вариант. Рассмотрим основные свойства и методы класса TFileStream, которые пригодятся нам для решения этой задачи.
TFileStream
Начинаем разбираться. Первым делом проверяем наличие входного файла, и если он не найден, благополучно выходим из процедуры. Сразу проверим размер выходного файла, он не должен превышать размер препарируемого файла. Если же все нормально, то создаем экземпляр потока, и открываем на чтение файл, который собираемся разрезать. Далее идет инициализация переменных, пропустим это место. Затем идет определение количества выходных файлов, остановлюсь на этом немного подробнее. Номер текущего выходного файла записывается в его расширение, в дальнейшем, по этим номерам файлы будут собраны. Сколько же цифр должно быть в расширении? Допустим 2. Тогда максимальное количество выходных файлов не должно превышать 99. По идее этого вполне достаточно, сложно представить ситуацию, когда придется "крошить" файл более мелко. Но если все же этот предел будет превышен, мы неминуемо попадем в неприятную ситуацию, связанную с повтором номеров. Тогда почему не увеличить количество цифр, скажем до 3. Теперь максимальное количество выходных файлов не должно превышать 999. Запас огромный (хотя его совсем не сложно преодолеть). А если выходных файлов будет мало, то в начале расширения будут присутствовать бесполезные нули, что с моей точки зрения выглядит не очень хорошо. К чему я все это рассказал. С моей точки зрения подобный подход имеет два больших минуса. Во-первых: слишком маленький предел мы задать не можем, велика вероятность выхода за эти пределы, что приведет к печальным последствиям. С другой стороны, большой предел приведет к тому, что в расширении будет много цифр, а при небольшом количестве выходных файлов это будет смотреться нелепо (например *.00001, *.00002 и т.д.). Во-вторых: программа просто лишается универсальности. Именно поэтому я предпочитаю производить подобный расчет для каждого нарезаемого файла. Завершает процедуру непосредственно нарезка файла. Половина дела сделана. Файл нарезан, теперь осталось собрать все части файла в одно целое. Для начала подготовим список файлов, которые будем объединять. Файлы будем выбирать при помощи OpenDialog1 с включенной опцией ofAllowMultiSelect. Имена всех файлов помещаем в строковый массив tmp. Рассмотрим, как подготавливается этот массив.
Здесь все просто и понятно, скажу пару слов о сортировке. Несмотря на то, что в открытом диалоге все файлы упорядочены, не факт, что они упорядочены и в OpenDialog1.Files.Strings. Если массив не отсортировать, результат может оказаться непредсказуемым. Не стану приводить здесь описание функции сортировки Sort, вы можете написать ее сами. Разберем функцию склейки файла.
В отличие от стандартной функции ExtractFileName, ExtractFileNameEx (ее код приведен ниже) возвращает имя файла без расширения. Если необходимо показать ход выполнения операции склеивания файлов в ProgressBar1, то функция GetSizeAllFiles (она так же приведена ниже) позволит определить размер конечного файла, а, следовательно, и ProgressBar1.Max.
На сегодня это все. Удачи в программировании. .:
Пример к данной статье :. Файлы: WindInfo Object viewer Windows Inspector Создатель произвольных форм Helper Borland Database Engine 5.11 BDE Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.
Немного юмора: :))
Дружественные рассылки: Все
кто хочет изучить Delphi и реально
научиться писать свои программы, ЦПИ "Эверест"
поможет Вам. 10 причин в пользу платного обучения в ЦПИ "Эверест"… 1. Когда Вы
платите деньги-
появляется дополнительный стимул
против лени: надо учиться, ведь деньги
уже уплачены….
5. Стоимость обучения
одного месяца в ЦПИ "Эверест"
сравнима с ценой хорошей книги. Но часто
ли Вам попадались книги, рассчитанные
именно на Вас. Мы же работаем
индивидуально.
8. А это значит, что …Мы
предлагаем получить "высшее
образование" - профессию
программиста всего за
1 год и 144 доллара, любой ВУЗ
попросит в 3 раза больше за один только
семестр. По всем вопросам обращайтесь ко мне. Если вы встретили в интернете
интересный сайт или статью, да и вообще, что угодно
связанное с Delphi, поделитесь ссылкой. Предложения, критику и пожелания пишите на e-mail. |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet Архив рассылки |
Отписаться
Вебом
Почтой
Вспомнить пароль |
В избранное | ||