IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Как разбить документ на страницы?, подайте идею...
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


же не манж па сис жур... ypriamii.gif
Суть проблемы такова: Есть некая таблица данных. Ее нужно распечатывать в ДОСе (да! да!) на матричном принтере. На отдельных листах. При этом на каждом листе нужно печатать шапку. На первом листе шапка толстая, а на последующих - попроще. На каждом листе нужно печатать текст "Лист NNN из MMM листов", то есть общее число листов нужно вычислить заранее. После таблицы идет многострочная подпись. Необходимо, чтобы а) подпись не разрывалась, и б) на листе с подписью было не менее одной строки данных, ну и само собой шапка.
Т.е., имеем варианты:
- все влезает на один лист (толстая шапка, таблица, подпись)
- на один лист влезает все, кроме подписи (всей, или куска), поэтому на первом листе печатаем на одну строку меньше, чем можно было бы, а на втором - тонкую шапку, одну строку таблицы и подпись.
- все влезает на два листа (шапка+кусок таблицы до отказа, шапка+остаток таблицы+подпись)
- и так далее.
Есть большое желание написать процедуру, которая принимала бы, как параметры, число строк таблицы, число строк на листе, число строк двух видов шапок и подписи, и исходя из этого рассчитывала общее число листов и формировала массив количеств строк таблицы на каждом листе (во как загнул!). Есть ощущение, что это возможно smile.gif , но вот ведь... не получаецца. В других программах я просто при печати каждой строки проверял, как там у меня обстоят дела с подписью? Не пора ли начинать ее втискивать? А поскольку тут надо заранее рассчитать число листов... так уже сразу рассчитать и все длины страниц, тогда будет очень простой цикл собственно печати.
Интересуют какие-нибудь свежие идеи, можно в виде псевдокода...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Бродяжник @ 11.01.2006 13:10) *

процедуру, которая принимала бы, как параметры, число строк таблицы, число строк на листе, число строк двух видов шапок и подписи, и исходя из этого рассчитывала общее число листов и формировала массив количеств строк таблицы на каждом листе (во как загнул!).

Другой идеи просто неможет быть. smile.gif

Цитата(Бродяжник @ 11.01.2006 13:10) *

Есть ощущение, что это возможно smile.gif , но вот ведь... не получаецца.

полуцца! smile.gif
ты формулу написал? покажешь?
если хочешь, я набросаю..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Вроде вот так получилось у мя..
Я использовал следующие параметры:

n - количество строк в таблице
l - строк на одном листе (list)
t - строк в главном заголовке (title)
h - строк в заголовке на страницах (header)
f - строк в подписи (footer)
m - листов на печать

количество листов вычисляется так:

if n<=l-t-f then m:=1 else m:=2+(n-(l-t-f)) div (l-h-f)

Перед употреблением - проверить smile.gif)


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


Спасибо!
Как проверю, доложу smile.gif
Вообще-то я уже свою проблему решил... методом не всегда научного тыка. Процедура вместе с тестовой прогой заняла 65 строк (включая пустые).
Завтра-послезавтра выложу на всеобщее осмеяние.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 0:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name