Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 64

Оптимальная загрузка rtf документа

17.09.2013, 16:11. Показов 1823. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно я писал ( Лист из Rtf ) на форум по поводу записи в лист rtf документов задаваясь целью: "быстрое отображение содержимого richTextbox'a при выборе другого файла", но воспользовавшись предложенным решением я увидел что выгружать из листа string и записывать в RichTextBox занимает намного больше времени чем каждый раз читать файл .rtf. Поэтому я бы хотел узнать есть ли способ оптимально быстрого отображения соответствующего .rtf документа на RichTextBox компонент.
.rtf документы с картинками, в общем документов будет около 20-ти штук, будет ср. весом по 2 мегабайта.
Проект для желающих покопаться в приложение, если откроете программу и выберете другой юнит с открытой первой вкладкой, то поймёте почему я так хочу чтоб оно загружалось побыстрее
Посоветуйте пожалуйста в каком направлении копать для оптимизации, поделитесь ссылками, заранее благодарен.
Вложения
Тип файла: rar Английский WPF(12.10.13).rar (3.28 Мб, 4 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2013, 16:11
Ответы с готовыми решениями:

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер. Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что то непонятное. На оборотной стороне...

Обработка RTF документа в Delphi
Здравствуйте уважаемые форумчане, что то гугл не хочет мне подсказывать насчёт такой возможности. Может быть тут найдутся желающие помочь....

Загрузка RTF в RichTextBox
Испльзую такую запись для загрузки файла в richtextbox ...

8
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
17.09.2013, 16:19
Цитата Сообщение от Jonybang Посмотреть сообщение
я увидел что выгружать из листа string и записывать в RichTextBox занимает намного больше времени чем каждый раз читать файл .rtf.
Можете воспользоваться потоком для чтения файла, а затем содержимое потока отображать в RichTextBox.
И всё же, результат будет не такой уж и быстрый - документы достаточно большие, RTF-разметку нужно ещё и обработать, так что особой скорости не ждите - для сравнения откройте эти документы в WordPad, быстрее вряд ли получится.
0
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 64
18.09.2013, 04:09  [ТС]
tezaurismosis, просто думал если документы в оперативке держать то будет быстрее... Так я не понял, вы мне предложили всё-таки каждый раз открывать документ с помощью потока или записать потоки в лист? Если 2-е то у меня это не вышло, как и было написано в вышеупомянутой теме
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
18.09.2013, 12:33
Цитата Сообщение от Jonybang Посмотреть сообщение
записать потоки в лист
Можете записать потоки в лист, для этого необязательно хранить в листе строки, можно прямо потоки хранить
0
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 64
18.09.2013, 13:17  [ТС]
tezaurismosis, а можно поподробнее? как я сказал, я уже пытался и у меня ничего не вышло
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
18.09.2013, 15:24
Псевдокод
C#
1
2
3
4
5
var streams = new List<FileStream>();
// При каждом открытии потока
streams.Add(fileStream);
// При необходимости чтения
var str = streams[1].Read();
0
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 64
18.09.2013, 15:32  [ТС]
tezaurismosis, вы намерено пропускаете всё то что я писал ранее? в первом сообщении я упомянул тему: Лист из Rtf - в этой теме я точно так и делал, только последний ваш пункт в моём коде не упомянул, потому как сказал, что: "после записи в лист свойство CanRead становиться false. Handlle, Lenght и ещё пара свойств выдаёт исключение ObjectDisposedException". Может переведёте мою тему из этого раздела просто в раздел "C# .NET"? Потому как здесь похоже мне не могут помочь....
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
18.09.2013, 15:50
Цитата Сообщение от Jonybang Посмотреть сообщение
после записи в лист свойство CanRead становиться false. Handlle, Lenght и ещё пара свойств выдаёт исключение ObjectDisposedException
Виноват, пропустил это. Видимо по добавлению в лист потоки собираются сборщиком мусора, так как на них более ничего не ссылается.
Тогда можете писать в строки, картинки тоже должны записаться в строку, там можно что угодно хранить.
0
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 64
19.09.2013, 05:31  [ТС]
tezaurismosis, "но воспользовавшись предложенным решением я увидел что выгружать из листа string и записывать в RichTextBox занимает намного больше времени чем каждый раз читать файл .rtf. Поэтому я бы хотел узнать есть ли способ оптимально быстрого отображения соответствующего .rtf документа на RichTextBox компонент." Я понимаю что вы модератор и наверно трудно одновременно заниматься и модерированием форума и отвечать на вопросы начинающих программистов, но пожалуйста, сосредоточьтесь))) мы вернулись к тому, от чего пришли... я пытался также создать лист RichTextbox'ов, но у меня не вышло:
Загрузка в листы в BackgroundWorker'е в предварительном окне загрузки:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Создание массива RichTextbox'ов вне BackgroundWorker'a
//Вызов BackgroundWorker в котором в цикле вызывается метод LoadRtfToList
private void LoadRtfToList(int n)
        {
TextRange textRange;
           if (File.Exists(rtf.GetPath(n)))
           {
               FileStream fileStream1;
               textRange = new TextRange(rBArray[n - 1].Document.ContentStart, rBArray[n - 1].Document.ContentEnd);
               using (fileStream1 = new FileStream(rtf.GetPath(n), FileMode.OpenOrCreate))
               {               
                   textRange.Load(fileStream1, DataFormats.Text);//попытка получить доступ к обьекту из другого потока
               }
                
           }           
            RtfList.Add(rBArray[n - 1]);
}
я попробовал использовать invoke но так и не смог грамотно применить к моему случаю
Выгрузка из листов в главном окне
C#
1
2
3
4
5
private void LoadRtf()
        {
if (listBoxUnits.SelectedIndex != -1)
richTextBox1.Document = Lists.RtfList[listBoxUnits.SelectedIndex].Document;
         }
тоже пока незнаю будет работать или нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2013, 05:31
Помогаю со студенческими работами здесь

Загрузка RTF файла в RichTextBox
Буду благодарен за помощь Ругается на 44 и 27 строку, типа не верный формат void RTFToolStripMenuItemClick(object sender,...

Загрузка и сохранение RTF в TRichEdit
Доброе утро! Вопрос такой. У меня есть компонент RichEdit1 класса TRichEdit. Так вот. Его содержимое имеет и текст и графические...

RxRichEdit загрузка rtf с базы данных
Вообщем, у меня в программе загрузка rtf файла из бд sqlite, текст с картинкой. Когда запускаю у себя на компьютере(win8) все нормально,...

загрузка файлов на сервер-Формат RTF или DOC?
Здравствуйте Всем. Идет разработка приложения под ios - будет база данных на сервере и с приложения пользователь заходит...

Загрузка файлов RTF файлов в БД и отображение их в RichTextBox
при отображении файла из БД при помощи компонента отображается такое вот ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru