Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 12.07.2018
Сообщений: 19

Парсер rtf в текст и обратно

13.11.2023, 16:15. Показов 1075. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день, интересует, есть ли готовый парсер RTF в читабельный текст или может как-то автоматом можно преобразовывать через RichEdit?

В наличии есть база на SQL в ней хранится отформатированный (жирный, курсив, Tahoma и т.п.) текст в RTF формате, для примера приведу:

{\rtf1\ansi\ansicpg1251\deff0\defla ng1049{\fonttbl{\f0\fnil\fcharset20 4 Tahoma;}}
\viewkind4\uc1\pard\f0\fs20\'cf\'f0 \'e8\'e2\'e5\'f2 \'e2\'f1\'e5\'ec \par}

На форме есть RichEdit на который путем
Delphi
1
DBRichEditEh1.Lines.Add(dbgrideh4.DataSource.DataSet.Fields.Fields[5].Value);
добавляется текст RTF, как можно получить уже в RichEdit читабельный для юзера: "Привет всем", возможно я неправильно добавляю в RichEdit?

Сколько не перерыл информации готового парсера не нашел, либо писать самому, либо может кто подскажет.
Попытки использовать RichEdit не увенчались успехом, как RichEditу нужно сказать, чтобы он вывел текстом нормальным?
Или может как-то Rich Editor открывать нужно для этого?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2023, 16:15
Ответы с готовыми решениями:

Как преобразовать текст из формата RTF в обычный текст?
Как преобразовать текст из формата RTF в обычный текст?

Из файла прочитать текст и в этом тексте заменить все пробелы на _ и записать исправленный текст обратно
задача написать программу на assembler, под dos Нужно из файла прочитать текст и в этом тексте заменить все пробелы на _ , и записать...

RTF текст в SetClipboardData
SetClipboardData - никак не получается положить туда Rtf текст

6
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,461
13.11.2023, 16:26
Можно попробовать загрузить через LoadFromStream.
Или просто сохранить во временный файл и загрузить через LoadFromFile.
1
1 / 1 / 0
Регистрация: 12.07.2018
Сообщений: 19
13.11.2023, 16:32  [ТС]
Delphi
1
2
3
4
5
6
7
8
procedure TForm5.Button4Click(Sender: TObject);
var
  TempStream : TMemoryStream;
begin
  TempStream := TMemoryStream.Create;
  dbrichediteh1.Lines.SaveToStream(TempStream);
  dbrichediteh1.lines.LoadFromStream(TempStream);
end;
Попробовал, в результате в dbrichediteh1 пусто
0
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,461
13.11.2023, 16:41
1. По приведённому коду, если в RichEdit было пусто, то и останется пусто.
2. Чтобы прочитать с начала, после записи нужно передвинуть указатель на начало потока
Delphi
1
TempStream.Seek(0, 0);
1
 Аватар для Пытливый
3763 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
13.11.2023, 23:08
В обычном RichEdit есть свойство Lines, которое содержит текст без форматирования(форматирование лежит в других свойствах), его и можно использовать, возможно для dbrichediteh1 тоже так можно.
1
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
14.11.2023, 00:57
Цитата Сообщение от DenisSM1993 Посмотреть сообщение
Попробовал, в результате в dbrichediteh1 пусто
dbrichediteh то вам на хрена сдался?
0
1 / 1 / 0
Регистрация: 12.07.2018
Сообщений: 19
14.11.2023, 07:54  [ТС]
А разницы нет использовать RichEdit1 или RichEditEh. Только вот RichEditeh имеет больше возможностей.

Добавлено через 2 минуты
Дополнил код, переделал на обычный richedit:

Delphi
1
2
3
4
  TempStream:=TMemoryStream.Create;
  dbmemoeh1.Lines.SaveToStream(TempStream);
  TempStream.Seek(0, 0);
  RichEdit1.lines.LoadFromStream(TempStream);
Теперь просто копируется все тоже самое. Что было изначально, то и вставляется, читаемого нет

Добавлено через 1 час 21 минуту
А нет, извиняюсь сработало. Но надо дополнительно самому еще обработку сделать, у меня исходник текста чуть мудренее. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2023, 07:54
Помогаю со студенческими работами здесь

Текст из RTB сохраняется в RTF
Написал текстовый редактор, в нем все работает нормально, но когда сохраняешь файл и пытаешься открыть через блокнот он выдает примерно...

RTF текст как поле
Имеется база данных с полем Мемо (в котором пока просто текст) но нада расширить разметку потому что очень нужны нижние и верхние индексы,...

Текст не сохраняется из RxRichEdit в RTF
Ниче не пойму, вот не получается никак сохранить файл RTF из RxRichEdit RxREStory.ReadOnly:=False; ...

RTF в PDF: вертикальный текст
Всем привет! Есть некоторая задача, которую можно коротко описать как конвертация *.rtf в *.pdf средствами java. Для этой задачи...

Преобразовать RTF в обычный текст
Здравствуйте. На форме есть текстовое поле, куда необходимо вывести текст. В базе текст хранится в формате RTF, но в данной форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru