"Извлекаем архив из fb2" - читать интересную книгу автора (Карпов Юрий)Извлекаем архив из fb2|t_| Ты, готов? |go| Всегда, готов! |t_| Сейчас, я хочу занять твое время, чисто технологической работой, но я надеюсь, что в дальнейшем она нам сильно облегчит жизнь. |go| О чем речь. Зачем так много слов? |t_| Да, боюсь, что слов будет больше чем дела. Не люблю я читать занудные, но необходимые для правильного понимания, объяснения типа: "выберите пункт меню File (Файл) затем Open (Открыть)..." Мне хочется в нашем общении быть свободным от мелочной опеки, а говорить только о необходимом. А для этого у тебя под рукой должен быть исходный код программы о которой мы будем говорить. После перебора разных вариантов, сейчас я остановился на таком. Исходный код программы в виде архива будет хранится в самой книге FB2. |go| Не понял, как это? |t_| Формат fb2 позволяет в контейнере binary хранить рисунки. А почему бы нам не хранить там архивы. |go| А как к этому отнесется Грибов. |t_| Мне хочется думать, что с пониманием. Итак, сейчас, я опишу порядок действий по извлечению исходника программы из этой книги. В дальнейшем ты откомпилируешь программку и из наших дальнейших книг будешь извлекать архивы. Сегодня я не хочу распылятся, и описывать как работает эта программа, нам нужна она пока сама по себе. Начинаю. |go| Весь во внимании. |t_| 1. Сделай копию этой книги. 2. Измени расширение .fb2 на .txt, или нет, сразу назови его zzz.txt - это будут данные для нашей одноразовой программки. 3. Открой файл блокнотом. 4. Найди текст #60;binary id="zip_from_fb2.zip" content-type="arc/zip"#62; 5. Удали эту строку и все что есть до ее. 6. Найди текст #60;/binary#62; 7. Удали эту строку и все после ее. В файле должно остаться: UEsDBAoAAAAAAHQXhzcAAAAAAAAAAAAAAAANAAAAemlwX2Zyb21fZmIyL1BLAwQKAAAAAADmHIc3 ... ... AAAAAAkACQBvAgAAJA8AAAAA всего 80 строк такой кузязябры. 8. Сохрани файл. Данные готовы. Теперь программка. Запускай Delphi. Делай новый проект Поставь на форму одну кнопочку. В обработчик нажатия кнопочки напиши // начало кода procedure TForm1.Button1Click(Sender: TObject); var Path : string; MS, MS1 : TMemoryStream; begin MS := TMemoryStream.Create; MS1 := TMemoryStream.Create; Path := ExtractFileDir(ParamStr(0)) + '\'; MS.LoadFromFile(Path+'zzz.txt'); MS.Position := 0; DecodeStream(MS, MS1); MS1.SaveToFile(Path+'zip_from_fb2.zip'); MS.Free; MS1.Free; end; // конец кода Еще, в uses добавь Сохрани проект и unit1 в какую либо папку (я имею в виду, создай папку). Туда же брось, подготовленный файл zzz.txt Запусти Delphi на выполнение. Нажми на кнопку. Все. Полученный архив распакуй в новую папку. А все сделанное можешь спокойно удалить. |go| А зачем удалять, может и дальше ею пользоваться? |t_| Нет, программка одноразова, тут целая история, об эмоциональности программирования, но об это потом... Запускай проект полученный из архива И проверь его на этой книге Ну, как, получилось? |go| Постой, постой! А, как подготавливать архивы для вставки в книгу? |t_| А, тебе зачем? |go| Ну, вот, пожадничал. |t_| Да нет, мне не жалко... хотя постой, ты совершенно прав, тебе пригодится возможность кодировать рисунки. |go| А еще и извлекать картинки из книги... |t_| Ну ладно, уговорил. Сейчас переделаю прогу. И напишу еще одну, и их исходники засуну в эту книгу. Чтобы тебе не запутаться, программа для декодирования будет находится в конце книги. |go| Хорошо, я потом посмотрю исходники, и если, что-то пойму... |t_| Ладно, пиши. Успехов! |
|
|