Библиотека knigago >> Справочная литература >> Руководства и инструкции >> Пишем программу для создания книг FB2.


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1363, книга: Распространитель
автор: Ричард Матесон

"Распространитель" Ричарда Матесона - это леденящий кровь шедевр ужасов, который долго будет преследовать вашу память. Этот роман, впервые опубликованный в 1959 году, остается одним из самых влиятельных произведений жанра и по сей день. История вращается вокруг Неда Скотта, скромного пригородного домохозяйки, чья жизнь принимает жуткий оборот, когда его кусает таинственное существо. Поначалу Нед не замечает никаких изменений, но вскоре он обнаруживает, что жаждет крови. Эта жажда...

СЛУЧАЙНАЯ КНИГА

Ночь сыроежек (СИ). Влад Ааронович Костромин
- Ночь сыроежек (СИ)

Жанр: Проза

Серия: Наследники Мишки Квакина

Юрий Карпов - Пишем программу для создания книг FB2.

Пишем программу для создания книг FB2.
Книга - Пишем программу для создания книг FB2..  Юрий Карпов  - прочитать полностью в библиотеке КнигаГо
Название:
Пишем программу для создания книг FB2.
Юрий Карпов

Жанр:

Руководства и инструкции, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Книгоделие, Программирование: прочее, Pascal, Delphi, Lazarus и т.п.

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Пишем программу для создания книг FB2."

Подробный комментарий к исходному коду программы создающей книжку в формате FB2.

Читаем онлайн "Пишем программу для создания книг FB2.". [Страница - 5]

переписать прогу, чтобы эти списки грузились или из текстового файла или из INI файла.


Вернемся к заполнению заголовка

Нам надо ввести данные об авторе / авторах и переводчике / переводчиках

Так же нажимаем на соответствующую кнопочку с троеточием и работаем в открывшемся окне.


Вы уже наверно заметили, что мне прискучило очень уж подробно расписывать код. Но в данном unit тоже ничего особенного, единственно, пришлось ввести структуру TPerson, я думаю Вы легко разберетесь зачем она мне нужна.

Мне интереснее, совершенствование программы. Представьте ситуацию, Вы делаете 10 книг (или 100) одного автора и каждый раз делая новую книгу, заполняете опять и опять данные об этом человеке. Мне было бы лень. Ваши предложения?…


Ну хорошо мы заполнили и Title-info и Document-info и Publish-info.


Давайте-ка глянем, что там в коде записи файла FB2.


// начало кода

Procedure Make_fb2(S: string);

begin //

if Form1.ListBox1.Items.Count = 0 then exit;

SytleStack.Clear; // подготовка стека стилей

OutList.Clear; // подготовка выходного списка

SaveDescription;

SaveBodyFB2; // это мы уже в общем рассмотрели

SaveEndnotes;

OutList.Add('</FictionBook>'); // закрываем книгу

OutList.SaveToFile(S); // Запись в файл

showMessage('Done.'); // Сообщаем об удачном завершении

end;

// конец кода


Как видите мы еще не рассмотрели две процедуры.


// начало кода

procedure SaveDescription;

const

max = 5; // может я захочу изменить число строк в массиве, тогда я изменю только одну цифру

mas: array[1.. max] of string =

(// массив для заголовочной части FB2 файла

'<?xml version="1.0" encoding="windows-1251"?>', // как видите я делаю файл в кодировке Win

// я не вижу смысла в применении юникода, но если речь идет не о русском языке,

// то сделайте здесь изменение.

'<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"',

' xmlns: l="http://www.w3.org/1999/xlink">',

' <description>',

' <title-info>'

);

var i: byte;

begin

// Выводим в выходной файл начало FB2 файла

for i:= 1 to max do

OutList.Add(Mas[i]);

// конец кода

Дальше просматриваем списки Жанров, Автором и Переводчиков и выводим оттуда информацию (если она там есть).

Т.е. проверяем все заполненные поля форм описывающих книгу и выводим информацию в соответствующие секции заголовка книги.


Будем считать, что с Description - покончили.


Осталось только


// начало кода

procedure SaveEndnotes;

var

S: string;

i: integer;

begin

if Form1.EndNotesList.Items.Count = 0 then exit;


OutList.Add('<body name="notes"><title><p>Примечания</p></title>');


for i:= 0 to Form1.EndNotesList.Items.Count - 1 do

begin

S:= Form1.EndNotesList.Items[i];

OutList.Add('<section id="n_'+IntToStr(i+1)+'"><title><p>'+IntToStr(i+1)+'</p>');

OutList.Add('</title><p>'+S+'</p>');

OutList.Add('</section>');

end;


OutList.Add('</body>');

end;

// конец кода


Согласитесь, что здесь все просто, просматриваем список сносок и соблюдаем формат FB2. Но остается один маленький вопрос, а что если нам нужно будет вывести многострочную (точнее много абзачную) сноску. Да, возникает вопрос, приходят и варианты решения…


Ладно, кое-что в коде я пропустил. Но основные недостатки программы, я кажется описал. Правда, наверняка есть ляпы, которые я не заметил…


Наконец файл книги в формате FB2 создан.


На этом все? Ну нет, сейчас все авторы заканчивают книги словами "Продолжение следует". И я замыслил по крайней мере одно продолжение. Мне кажется оно просто необходимо.

Программа должна уметь не только создавать, но и читать файл FB2. Тогда можно растягивать удовольствие изготовления книги на несколько дней, и не потребуется каждый раз заново: читать текстовый файл, расставлять стили, форматировать строки и т. д. и все это с одной и той же книгой - ужас.

Но, как известно из математики, обратная задача всегда сложнее прямой. И т. к. я считаю, что на сегодня уже достаточно утомил Вас. Давайте рассказ о второй версии программы отложим.


Связаться со мной Вы сможете по адресу w__cat@mail.ru (обратите внимание, 2 подчеркивания, т. к. w_cat@mail.ru оказался уже занят). Предупреждаю сразу, я ленив, почту смотрю не каждый день, да и отвечать всем может и не смогу (я же не знаю сколько найдется желающих мне написать). Второе, эту почту я специально завел для этой программки, и если Вы, друзья мои завалите ее спамом или матом, я просто забуду туда дорогу.


Лицензионные условия таковы, пользуйтесь на здоровье, копируйте, переделывайте, если сможете заработать на этом деньги, буду только рад.


Карпов Юрий.

Кохтла-Ярве.

2010.


--">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.