Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Удовлетворительно?
Отлично! 0 0%
Хорошо! 1 100.00%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 1. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 10:50   #1
alldar
 
Регистрация: 01.08.2011
Сообщений: 3
По умолчанию сконвертировать текстовый файл с программой на языке Паскаль в RTF-формат

Здравствуйте всем!

Подскажите начинающему!

Как сконвертировать текстовый файл с программой на языке Паскаль в RTF-формат. Необходимо выделить с помощью курсива, подчеркивания или полужирного шрифта комментарии в программе, служебные слова (begin, end, case).

Помогите разобраться! Спасибо!
alldar вне форума Ответить с цитированием
Старый 19.08.2011, 11:04   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Берете исходник и парсите, формируя ртф-теги
p51x вне форума Ответить с цитированием
Старый 19.08.2011, 11:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

к словам p51x добавлю, что если задача стоит просто оформить исходник (а не написать такую программу),то уже есть инструменты, которые это умеют делать.

например, в Delphi есть эксперт GExperts
в него входит модуль Source Export...
(p.s. кстати, данный эксперт бесплатен и распространяется в исходных кодах, поэтому его код можно взять за основу своей программы. Только, конечно, так код не на Pascal, а на ObjectPascal (на Delphi)


p.s. если нужно просто сконвертировать исходник в RTF - давайте исходник, я сконвертирую...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.08.2011, 13:30   #4
alldar
 
Регистрация: 01.08.2011
Сообщений: 3
По умолчанию

Серж, тут как я понял берется любой документ в блокноте и конвертируется в (.rtf , .doc), но как, так и не разобрался? Одним словом в голове каша!

Подскажите хотя бы азы с чего начать! (и мне именно нужна программка). Спасибо!

С уважением, Вячеслав
alldar вне форума Ответить с цитированием
Старый 19.08.2011, 14:04   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Подскажите хотя бы азы с чего начать! (и мне именно нужна программка). Спасибо!
Вам нужно "всёго-навсего" приизвести Лексический анализ кода.
В результате этого разбора Вы получаете набор токенов (лексем).
Дальше можно применить синтаксический анализ, а можно и проще, просто определить что представляет собой данная лексема - это константа (и если да - то какого типа), переменная, ключевое слово, комментарий и т.д.
(в этом случае, в отличие от синтаксического анализа, Ваша программа нормально скушает такой "код"
Код:
end begin end; for 'a' = var 1 to ; begin do do while 1:='x';
но ведь задачи проверить код на правильность у Вас не стоит?!
А для выделения ключевых моментов (для вашего задания) этого разбора будет вполне достаточно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.08.2011, 11:28   #6
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Нужно описание RTF-формата, например тут можно почитать: http://www.codenet.ru/progr/formt/rtf1.php Правда там не полное, но для сабжа должно хватить.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 20.08.2011, 11:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кстати, ещё раз перечитал условия задачи...

если понимать их БУКВАЛЬНО,
то задача ещё больше упрощается.
Нужно распарсить исходный текст (по разделителям) , попутно обнаруживая комментарии (в Паскаль их всего два вида и оба имеют открывающий маркер и закрывающий) и выделить ТРИ ключевых слова (begin, end, case)
Это элементарно делается в один единственный проход по исходному тексту..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.08.2011, 11:48   #8
alldar
 
Регистрация: 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.
alldar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сконвертировать 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