|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.04.2009, 20:48 | #1 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
получение текстового диапазона программым путем
Есть док.в Ворде следующей структуры:
Текст вопроса № 1 <Enter> -ответ № 1 <Enter> -ответ № 2 <Enter> -ответ № 3 <Enter> <Enter> Текст вопроса № 2 <Enter> -ответ № 1 <Enter> -ответ № 2 <Enter> -ответ № 3 <Enter> <Enter> и т.д. Необходимо считать с дин.массив текст вопроса с ответами. Поступаю след. образом: считываем число строк до позиции дока, когда подряд идут два <Enter>, затем выделяю память под это кол-во строк, после чего хочу циклом считать каждую из строк, привожу код: Код:
|
09.04.2009, 22:08 | #2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Как-то странно вы, Lisi4ka, рассуждаете.
У вас каждая строка — это абзац, вернее и текст вопроса и ответы занимают один абзац. Поэтому, да, можно читать абзацы, пока не наткнемся на пустой. Но это не продуктивно. Гораздо выгоднее, с точки зрения производительности, пользоваться поиском. Искать нужно 2 абзаца подряд. К сожалению, в Delphi я не силен, а на VBA это выглядит так: Код:
Еще одна мелочь. Такой поиск нам даст всё, кроме последнего вопроса если в конце документа не стоит, я надеюсь, два абзаца подряд. Получить этот последний вопрос просто: нужно взять диапазон от iStart конца документа. Надеюсь, что это сделаете сами. Спрашивайте, всегда рад помочь.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 09.04.2009 в 22:21. |
10.04.2009, 10:06 | #3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Посмотрел я ваш код еще раз. Сама строка, где вылетает ошибка, мне непонятна.
Код:
Лучше день потерять — потом за пять минут долететь!©
|
10.04.2009, 16:17 | #4 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
Спасибо за науку и ответ!
Действительно, такой способ гораздо проще и рациональнее, чем мой! Однако Дельфя не дает проверить, как он работает (а через VBA все хорошо!), ругается аналогично на Range Код:
|
10.04.2009, 16:22 | #5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
А как объявлена переменная WordDocument1? Список объектов и методов доступен для нее? Кстати, насколько я помню, Delphi чувствителен к регистру в именах переменных.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 10.04.2009 в 16:25. |
10.04.2009, 16:29 | #6 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
viter.alex, я в Range(1,2); Range(0,1) и т.д. ставила, оно все равно не работало, изначально на позициях нач. и кон. диапазона стояло что-то вроде К и К+1...
Теперь вот ваш переделанный код тоже е работает, ругается аналогичным образом, проверю, мож. где-то типы д. не те указала.. |
10.04.2009, 16:32 | #7 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
ВордДокумент как надо объявлен, для него Range доступно, а для Range доступно Find, но в самом Range при указании нижнего индекса диапазона (WordDocument.Range.End_) все недоступно, что-то дельфям не нравится)
|
10.04.2009, 16:50 | #8 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
Проблему решила путем присвоения переменной типа OleVariant значения worddocument1.Range.End_, теперь с синтаксисом разбираюсь, ведь свойства Paragraphs у ActiveDocument.Range(iStart, ActiveDocument.Range.End).Find.Pare nt нет(((
|
10.04.2009, 17:31 | #9 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Объект Parent не доступен через список, но существует. В VBA его тоже не видно, но я же знаю, что это Range, поэтому и пишу, как будто он есть. Может в Delphi такой вариант и не пройдет.
Лучше день потерять — потом за пять минут долететь!©
|
10.04.2009, 18:29 | #10 |
Пользователь
Регистрация: 28.09.2008
Сообщений: 31
|
Вот что получилось:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание билетов путем импорта из таблицы | mistx | Microsoft Office Excel | 2 | 25.02.2009 09:02 |
Эллипс путем перемещения точки вокруг отрезка | Dublin | Мультимедиа в Delphi | 4 | 22.10.2008 21:30 |
Как вставить имя файла с путем в combobox | Andreych74 | Win Api | 0 | 08.10.2008 10:30 |
Имя диапазона | CAMyM | Microsoft Office Excel | 8 | 09.11.2007 10:16 |
Как ввести пароль для БД Paradox программным путем ? | zetrix | БД в Delphi | 2 | 07.04.2007 21:50 |