Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichTextBox ерунда в строках после ворд 
:(
    Опции темы
Laonda
Дата 27.2.2012, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2012

Репутация: нет
Всего: нет



Суть в следующем:
 1) Имеется статья формата doc (заголовки, абзацы, списки)
 2) Копируется текст стати в буфер обмена и затем в программу в RichTextBox
 3) Программа должна парсить текст и определить заголовки где, где начинается абзац, где список.

 На первый взгляд всё просто, но после копирования из форда в рич, в строках получается полная ересь, не соблюдаются переходы между строками. Например если вбить тот же текст в ричТексБокс в ручную то всё будет очень просто. В результате приходится обрабатывать текст посимвольно и отталкиваться только от кол-ва пробелов и формата текста.

 Возможно ли как-то упростить парсинг или заставить Рич, воспринимать копируемый текст адекватно. Можно ли поймать переход между строками?
PM MAIL   Вверх
diadiavova
Дата 27.2.2012, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Laonda, Если ты копируешь из ворда в буфер, потом вствляешь из буфера в ричтекстбокс, то по идее все должно работать нормально, по крайней мере, если это делать средствами  винды, а не программно как-нибудь. Если у тебя получается ерунда, то выложи проект, документ ворд из которого копируешь, тогда можно будет что-то думать.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Laonda
Дата 27.2.2012, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2012

Репутация: нет
Всего: нет



Вот стаья.
Если её копировать в проект с ртб

Код

 RTB1.Select(RTB1.GetFirstCharIndexFromLine(ScanM), RTB1.Lines(ScanM).Length)
MsgBox(RTB1.SelectedText)


В итоге получим строки взятые по непонятному принципу.
А если вбивать в ручную переходы строк корректны.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  _____.doc 64,50 Kb
PM MAIL   Вверх
diadiavova
Дата 27.2.2012, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Laonda @  27.2.2012,  07:46 Найти цитируемый пост)
В итоге получим строки взятые по непонятному принципу.

Что значит по непонятному принципу? Скопировал, внешне выглядит так же(с учетом ширины страницы ессно). Хочешь увидеть где на самом деле заканчиваются строки установи для ричтекстбокса свойство 
WordWrap = Falce, если оставить его значение в True(значение по умолчанию), то строка будет заполняться пока места хватает. В документе ворд текст изначально был вбит именно так, только там он распределяется по ширине страницы, а в ричтекстбоксе - по ширине ричтекстбокса.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Laonda
Дата 27.2.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2012

Репутация: нет
Всего: нет



Цитата(diadiavova @ 27.2.2012,  06:58)
Что значит по непонятному принципу? 

Бывают строки из 1ого пробела, бывают из 3 символов, бывают с абзац размером... Причем они не совпадают с шириной ртб никак.


Сделал как вы советовали:

WordWrap = Falce

Большое спасибо, вы просто спасли)))

Но может быть такое что переход строки не ставился допустим на протяжении 5 тыс. символов и тогда переход строки все таки сам собой появится лишний?
Или теперь всегда переходы будут = переходам копируемого?
PM MAIL   Вверх
diadiavova
Дата 27.2.2012, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Laonda @  27.2.2012,  15:53 Найти цитируемый пост)
 Причем они не совпадают с шириной ртб никак.

Не в этом дело. Просто ртб отображает одну строку как несколько, если она не вмещается в ширину(при WorrdWrap=True), хотя на самом деле в тексте это одна строка. В тексте разделение строк обеспечивается символами 13(возврат каретки) и 10(новая строка) юникода. Когда ты используешь методы для получения строк, эти строки выбираются именно по этим (неотображаемым) символам, в то время как визуальное разделение на строки в элементе управления зависит еще и от вышеозначенного свойства.
Цитата(Laonda @  27.2.2012,  15:53 Найти цитируемый пост)
Но может быть такое что переход строки не ставился допустим на протяжении 5 тыс. символов и тогда переход строки все таки сам собой появится лишний?

Ворд и другие редакторы используют создание нового абзаца при нажатии энтер, а если нажать его с шифтом, то вставляется переход на новую строку. Иногда такой переход ставят намеренно, в твоем документе переходы есть и я не думаю, что они там появились случайно.
Цитата(Laonda @  27.2.2012,  15:53 Найти цитируемый пост)
Или теперь всегда переходы будут = переходам копируемого? 

Думаю так и будет(если правильно понял вопрос).


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Laonda
  Дата 27.2.2012, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2012

Репутация: нет
Всего: нет



Да я в ворде и не сомневаюсь, там конечно же все корректно и где надо переходы.

Вопрос был как раз в:
"теперь всегда переходы будут = переходам копируемого? "

Спс за ответы)) Поэкспериментирую, если это не так то отпишусь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.