Мне интереснее, совершенствование программы. Представьте ситуацию, Вы делаете 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(''); // закрываем книгу
OutList.SaveToFile(S); // Запись в файл
showMessage('Done.'); // Сообщаем об удачном завершении
end;
// конец кода
Как видите мы еще не рассмотрели две процедуры.
// начало кода
procedure SaveDescription;
const
max = 5; // может я захочу изменить число строк в массиве, тогда я изменю только одну цифру
mas: array[1.. max] of string =
(// массив для заголовочной части FB2 файла
'', // как видите я делаю файл в кодировке Win
// я не вижу смысла в применении юникода, но если речь идет не о русском языке,
// то сделайте здесь изменение.
'
' xmlns: l=«http://www.w3.org/1999/xlink» >',
'
'
);
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('
for i:= 0 to Form1.EndNotesList.Items.Count – 1 do
begin
S:= Form1.EndNotesList.Items[i];
'+IntToStr(i+1)+'OutList.Add('
'+S+'OutList.Add('
OutList.Add('');
end;
OutList.Add('