|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: Удовлетворительно? | |||
Отлично! | 0 | 0% | |
Хорошо! | 1 | 100.00% | |
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 1. Вы ещё не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме |
19.08.2011, 10:50 | #1 |
Регистрация: 01.08.2011
Сообщений: 3
|
сконвертировать текстовый файл с программой на языке Паскаль в RTF-формат
Здравствуйте всем!
Подскажите начинающему! Как сконвертировать текстовый файл с программой на языке Паскаль в RTF-формат. Необходимо выделить с помощью курсива, подчеркивания или полужирного шрифта комментарии в программе, служебные слова (begin, end, case). Помогите разобраться! Спасибо! |
19.08.2011, 11:04 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Берете исходник и парсите, формируя ртф-теги
|
19.08.2011, 11:32 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
к словам p51x добавлю, что если задача стоит просто оформить исходник (а не написать такую программу),то уже есть инструменты, которые это умеют делать.
например, в Delphi есть эксперт GExperts в него входит модуль Source Export... (p.s. кстати, данный эксперт бесплатен и распространяется в исходных кодах, поэтому его код можно взять за основу своей программы. Только, конечно, так код не на Pascal, а на ObjectPascal (на Delphi) p.s. если нужно просто сконвертировать исходник в RTF - давайте исходник, я сконвертирую... |
19.08.2011, 13:30 | #4 |
Регистрация: 01.08.2011
Сообщений: 3
|
Серж, тут как я понял берется любой документ в блокноте и конвертируется в (.rtf , .doc), но как, так и не разобрался? Одним словом в голове каша!
Подскажите хотя бы азы с чего начать! (и мне именно нужна программка). Спасибо! С уважением, Вячеслав |
19.08.2011, 14:04 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
В результате этого разбора Вы получаете набор токенов (лексем). Дальше можно применить синтаксический анализ, а можно и проще, просто определить что представляет собой данная лексема - это константа (и если да - то какого типа), переменная, ключевое слово, комментарий и т.д. (в этом случае, в отличие от синтаксического анализа, Ваша программа нормально скушает такой "код" Код:
А для выделения ключевых моментов (для вашего задания) этого разбора будет вполне достаточно... |
|
20.08.2011, 11:28 | #6 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Нужно описание RTF-формата, например тут можно почитать: http://www.codenet.ru/progr/formt/rtf1.php Правда там не полное, но для сабжа должно хватить.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
20.08.2011, 11:52 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
кстати, ещё раз перечитал условия задачи...
если понимать их БУКВАЛЬНО, то задача ещё больше упрощается. Нужно распарсить исходный текст (по разделителям) , попутно обнаруживая комментарии (в Паскаль их всего два вида и оба имеют открывающий маркер и закрывающий) и выделить ТРИ ключевых слова (begin, end, case) Это элементарно делается в один единственный проход по исходному тексту.. |
25.08.2011, 11:48 | #8 |
Регистрация: 01.08.2011
Сообщений: 3
|
Помог один хороший чел! Как вот это?
program converter; ▲
║uses crt; ■ ║var txt, rtf: text; ▒ ║ txt_str,rtf_str,filen: string; ▒ ║ x,y: integer; ▒ ║begin ▒ ║{Начало} ▒ ║clrscr; ▒ ║writeln(' ConVert ver.1.0'); ▒ ║writeln('Программа конвертирует *.txt файл в *.rtf документ'); ▒ ║writeln; ▒ ║writeln('Введите имя текстового файла:'); ▒ ║readln(filen); ▒ ║{/Начало} ▒ ║ ▒ ║assign(txt,filen+'.txt'); {Связываем текстовый файл} ▒ ║assign(rtf,filen+'.rtf'); {Связываем rtf файл} ▒ ║ ▒ ║rewrite(rtf); {Перезвписываем rtf} ▲ ║reset(txt); {Перазагружаем txt} ▒ ║readln(txt); {Открываем для считывания txt} ▒ ║ ▒ ║writeln('Создание RTF документа...'); ▒ ║{Вставляем первоначальные RTF теги} ▒ ║write(rtf,'{\rtf1 {\b TXT to RTF \par \par'+filen+'}\par {\fonttbl Times New R▒ ║ ■ ║{Цикл считывает и заполният инфу} ▒ ║{из текстового в rtf документ} ▒ ║{пока не наступит конец txt файла - eof "End Of File"} ▒ ║while not(eof(txt)) do ▒ ║ begin ▒ ║ {если находим конец строки - eoln "End Of LiNe"} ▲ ║ if (eoln(txt)) then ▒ ║ begin ▒ ║ writeln(rtf,'\par \par'); {rtf теги оклнчания строки "параграф"} ▒ ║ end; ▒ ║ readln(txt,txt_str); {считывание txt} ▒ ║ writeln(rtf,txt_str); {запись rtf} ▒ ║end; ▒ ║ ▒ ║write(rtf,' }\par }'); {rtf тег окончания документа} ▒ ║ ▒ ║{Закрываем файлы} ▒ ║close(rtf); ■ ║close(txt); ▒ ║ ▒ ║ ▒ ║writeln('Программа завершена. Нажмите Enter'); ▒ ║{Конец} ▒ ║readln; ▒ ║end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сконвертировать BitMap в другой формат | sergeyrulit | Общие вопросы Delphi | 3 | 27.11.2010 15:45 |
формат rtf | Михаил Юрьевич | Общие вопросы Delphi | 2 | 03.10.2010 00:10 |
Текстовый файл (паскаль) | JIucifeR | Помощь студентам | 4 | 08.05.2009 17:00 |
Паскаль. Задача на текстовый файл | MAnytta | Помощь студентам | 1 | 03.03.2009 19:41 |