![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
Бродяжник |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
же не манж па сис жур...
![]() Суть проблемы такова: Есть некая таблица данных. Ее нужно распечатывать в ДОСе (да! да!) на матричном принтере. На отдельных листах. При этом на каждом листе нужно печатать шапку. На первом листе шапка толстая, а на последующих - попроще. На каждом листе нужно печатать текст "Лист NNN из MMM листов", то есть общее число листов нужно вычислить заранее. После таблицы идет многострочная подпись. Необходимо, чтобы а) подпись не разрывалась, и б) на листе с подписью было не менее одной строки данных, ну и само собой шапка. Т.е., имеем варианты: - все влезает на один лист (толстая шапка, таблица, подпись) - на один лист влезает все, кроме подписи (всей, или куска), поэтому на первом листе печатаем на одну строку меньше, чем можно было бы, а на втором - тонкую шапку, одну строку таблицы и подпись. - все влезает на два листа (шапка+кусок таблицы до отказа, шапка+остаток таблицы+подпись) - и так далее. Есть большое желание написать процедуру, которая принимала бы, как параметры, число строк таблицы, число строк на листе, число строк двух видов шапок и подписи, и исходя из этого рассчитывала общее число листов и формировала массив количеств строк таблицы на каждом листе (во как загнул!). Есть ощущение, что это возможно ![]() Интересуют какие-нибудь свежие идеи, можно в виде псевдокода... |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
процедуру, которая принимала бы, как параметры, число строк таблицы, число строк на листе, число строк двух видов шапок и подписи, и исходя из этого рассчитывала общее число листов и формировала массив количеств строк таблицы на каждом листе (во как загнул!). Другой идеи просто неможет быть. ![]() Есть ощущение, что это возможно ![]() полуцца! ![]() ты формулу написал? покажешь? если хочешь, я набросаю.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вроде вот так получилось у мя..
Я использовал следующие параметры: 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) Перед употреблением - проверить ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Бродяжник |
![]()
Сообщение
#4
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо!
Как проверю, доложу ![]() Вообще-то я уже свою проблему решил... методом не всегда научного тыка. Процедура вместе с тестовой прогой заняла 65 строк (включая пустые). Завтра-послезавтра выложу на всеобщее осмеяние. |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 22:23 |