powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RzRichEdit добавить строки из потока?
10 сообщений из 10, страница 1 из 1
Как в RzRichEdit добавить строки из потока?
    #40129452
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был такой код
Код: pascal
1.
2.
3.
4.
5.
6.
          Stream := TADBlobStream.Create(TBlobField(q.Q.FieldByName('conclusion')), bmRead);
          try
            EditConclusion.Lines.LoadFromStream(Stream);
          finally
            Stream.Free;
          end;


Все работало, но только подгружаемый текст полностью затирал старый текст.
Нужно, чтобы он добавлялся в конец текста.
Переписал так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
          Stream := TADBlobStream.Create(TBlobField(q.Q.FieldByName('conclusion')), bmRead);
          Lns := TStringList.Create;
          try
            Lns.LoadFromStream(Stream);
            EditConclusion.Lines.AddStrings(Lns);
          finally
            Lns.Free;
            Stream.Free;
          end;


В результате старый текст остается нормальным, а внизу добавляется новый текст в виде:
автор{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204{\*\fname Arial;}Arial CYR;}{\f1\fnil\fcharset204 Tahoma;}}
\viewkind4\uc1\pard\qc\b\f0\fs24\'cd\'c0\'cf\'d0\'c0\'c2\'cb\'c5\'cd\'c8\'c5 \'ed\'e0 \'c2\'ca\par
\par
\pard\b0\fs20\par
\'c4\'e8\'e0\'e3\'ed\'ee\'e7\par


Как сделать, чтобы текст добавлялся в читаемом виде?
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129456
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой изврат сработал:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
Stream := TADBlobStream.Create(TBlobField(q.Q.FieldByName('conclusion')), bmRead);
     try
            EditConclusion.SelectAll;
            EditConclusion.CutToClipboard;
            EditConclusion.Lines.LoadFromStream(Stream);
            EditConclusion.PasteFromClipboard;
     finally
            Stream.Free;
     end;
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129563
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Stream := TADBlobStream.Create(TBlobField(q.Q.FieldByName('conclusion')), bmRead);
Lns := TMemoryStrema.Create;
try
  EditConclusion.Lines.SaveToStream(Lns);
  Lns.CopyFrom(Stream, 0);
  Lns.Position := 0;
  EditConclusion.Lines.LoadFromStream(Lns);
finally
  Lns.Free;
  Stream.Free;
end;
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129592
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не поможет. Как и в случае с любым другим markup форматом, два слепленных
последовательно документа не превратятся магическим образом в один.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129622
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

Прежде всего, никаких Lines. Переносы #13#10 в коде RTF - это вовсе не те строки, которые вы глазами видите, открыв файл RTF в редакторе. Лучше и от Stream отказаться, и оперировать в старых добрых AnsiString, ибо нужно будет бегать по тексту туда-сюда.

Склеить 2 rtf файла руками можно, но всяко придется разобраться в формате. Видны как минимум 2 способа: грубый и правильный. Грубым способом во втором файле отбрасываете заголовок (все, что идет до первого смыслового символа) и присобачиваете к первому файлу перед завершающей фигурной скобкой. Поплывут шрифты, цвета, но текст воткнется.

А если правильно, надо полностью разобрать заголовки, таблицы шрифтов и цветов, соотнести их друг с другом, сформировать новые объединенные таблицы и по всему тексту выставить новые управляющие коды. Сформировать новый файл. Хорошая такая работа, почти редактор написать.

Наверное, вам проще использовать готовый редактор (RichEdit?). Можно открыть где-нибудь невидимо для быстрой простой операции склеивания.

А, так у вас уже в руках редактор! Простите, не увидел. Если у него нет метода вставить rtf куском, что странно, через clipboard всяко должен отработать. Откройте другой такой же, там скопируйте, в первый вставьте. Позиционируйтесь только правильно.
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129637
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad

Код: pascal
1.
EditConclusion.Lines.AddStrings(Lns);


В результате старый текст остается нормальным, а внизу добавляется новый текст в виде:
Код: css
1.
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204{\*\fname Arial;}



Очевидно, что метод AddStrings ожидает набор простых строк, а вы ему файл rtf впихиваете. Ищите методы, принимающие rtf . Посмотрите реализацию LoadFromStream , нужный вам где-то рядом.
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40129726
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Не поможет
Согласен. Не подумал.
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40131370
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создай 2 стрима, не надо в один подмешивать.
А потом объедини текст из обоих.
Очевидно же, что оба стрима не простые, а с парсером. Вот пусть он и отработает.
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40131377
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"создай 2 стрима, не надо в один тупо подмешивать поток данных из второго."
А дальше - там уже в отладке увидишь, как тебе приятнее.
...
Рейтинг: 0 / 0
Как в RzRichEdit добавить строки из потока?
    #40131381
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...Все TХренЗнаетЧтоStream - Делают ровно это. ХренЗнаетЧто
результат - на выходе, должен быть (по идее).
Вот и надо работать с ним, а не с TStrings
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RzRichEdit добавить строки из потока?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]