![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Laonda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2012 Репутация: нет Всего: нет |
Суть в следующем:
1) Имеется статья формата doc (заголовки, абзацы, списки) 2) Копируется текст стати в буфер обмена и затем в программу в RichTextBox 3) Программа должна парсить текст и определить заголовки где, где начинается абзац, где список. На первый взгляд всё просто, но после копирования из форда в рич, в строках получается полная ересь, не соблюдаются переходы между строками. Например если вбить тот же текст в ричТексБокс в ручную то всё будет очень просто. В результате приходится обрабатывать текст посимвольно и отталкиваться только от кол-ва пробелов и формата текста. Возможно ли как-то упростить парсинг или заставить Рич, воспринимать копируемый текст адекватно. Можно ли поймать переход между строками? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Laonda, Если ты копируешь из ворда в буфер, потом вствляешь из буфера в ричтекстбокс, то по идее все должно работать нормально, по крайней мере, если это делать средствами винды, а не программно как-нибудь. Если у тебя получается ерунда, то выложи проект, документ ворд из которого копируешь, тогда можно будет что-то думать.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Laonda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2012 Репутация: нет Всего: нет |
Вот стаья.
Если её копировать в проект с ртб
В итоге получим строки взятые по непонятному принципу. А если вбивать в ручную переходы строк корректны. Присоединённый файл ( Кол-во скачиваний: 2 )
_____.doc 64,50 Kb |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Что значит по непонятному принципу? Скопировал, внешне выглядит так же(с учетом ширины страницы ессно). Хочешь увидеть где на самом деле заканчиваются строки установи для ричтекстбокса свойство WordWrap = Falce, если оставить его значение в True(значение по умолчанию), то строка будет заполняться пока места хватает. В документе ворд текст изначально был вбит именно так, только там он распределяется по ширине страницы, а в ричтекстбоксе - по ширине ричтекстбокса. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Laonda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2012 Репутация: нет Всего: нет |
Бывают строки из 1ого пробела, бывают из 3 символов, бывают с абзац размером... Причем они не совпадают с шириной ртб никак. Сделал как вы советовали: WordWrap = Falce Большое спасибо, вы просто спасли))) Но может быть такое что переход строки не ставился допустим на протяжении 5 тыс. символов и тогда переход строки все таки сам собой появится лишний? Или теперь всегда переходы будут = переходам копируемого? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Не в этом дело. Просто ртб отображает одну строку как несколько, если она не вмещается в ширину(при WorrdWrap=True), хотя на самом деле в тексте это одна строка. В тексте разделение строк обеспечивается символами 13(возврат каретки) и 10(новая строка) юникода. Когда ты используешь методы для получения строк, эти строки выбираются именно по этим (неотображаемым) символам, в то время как визуальное разделение на строки в элементе управления зависит еще и от вышеозначенного свойства.
Ворд и другие редакторы используют создание нового абзаца при нажатии энтер, а если нажать его с шифтом, то вставляется переход на новую строку. Иногда такой переход ставят намеренно, в твоем документе переходы есть и я не думаю, что они там появились случайно. Думаю так и будет(если правильно понял вопрос). -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Laonda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.2.2012 Репутация: нет Всего: нет |
Да я в ворде и не сомневаюсь, там конечно же все корректно и где надо переходы.
Вопрос был как раз в: "теперь всегда переходы будут = переходам копируемого? " Спс за ответы)) Поэкспериментирую, если это не так то отпишусь. |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |