For Each не работает

Раздел посвящен программированию с использованием Power Basic.
№№№№№
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 27.01.2013 (Вс) 23:10

For Each не работает

Сообщение №№№№№ » 27.01.2013 (Вс) 23:25

Добрый день, уважаемые участники форума.

Задача такая.
Необходимо в PowerBasic обрабатывать свойство у выделенного фрагмента текста в документе word через For Each.
Нужно выделить в документе фрагмент текста и запустить программу.

1. Программа компилируется (если закомментировать получение ColorIndex), но For Each почему то зависает. Предположения, что не может определить количество элементов в коллекции, или их число переполнено.
2. Свойство I_Color = II.Font.ColorIndex не определяется (ошибки компиляции).

Уж сколько времени пытаюсь сделать по всякому, не получается.
В интернете не могу найти подходящего примера.

Подскажите пожалуйста, где у меня ошибки и как правильно реализовать задуманное.

Проект прилагаю. Аналог в VBA также имеется (в Test.doc).
Вложения
Проект.rar
(70.47 Кб) Скачиваний: 312

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Re: For Each не работает

Сообщение Димитрий » 28.01.2013 (Пн) 11:38

Resource = oWordSel.Characters
что там передаётся не знаю, но если выполнить
MSGBOX STR$(Resource.COUNT)
получиться очень большое число (при выделенных 6 знаках)

Посмотрел про IPOWERCOLLECTION, но так и не придумал, как массово передать в коллекцию Character'ы

№№№№№
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 27.01.2013 (Вс) 23:10

Re: For Each не работает

Сообщение №№№№№ » 03.02.2013 (Вс) 20:16

Димитрий, спасибо вам большое, что откликнулись на проблему =)

Но я все еще ломаю голову, и ничего толкового по прежнему не выходит...

Пишу SET Resource = oWordSel.Characters
Затем:
DIM cou AS LONG
SET cou = oWordSel.Characters.count 'работает и получается верное число
SET cou = Resource.count 'а если так, то почему-то число большое (1297307460)

Если SET заменить на LET, получается то же самое.

SET I_Color = II.Font.Color 'пишет ошибку: Period not allowed
object SET I_Color = II.Font.Color 'пишет ошибку: Dispatch Object variable expected

Но если объявить LOCAL II AS DISPATCH (а не VARIANT), тогда FOR EACH не работает (на строке FOR EACH II IN Resource пишет ошибку: Variant variable expected).

Каким образом можно реализовать задуманное (перебор элементов в коллекции от Word через Each)?
- Нужно объявлять Resource как IPOWERCOLLECTION?
- (SET Resource = oWordSel.Characters) - похоже не работает. Но тогда как нужно правильно присвоить? Может быть, есть какой-то особый способ или функция?
- как правильно получить свойство цвета элемента коллекции (II.Font.Color) в переменную (в цикле For Each)?
Все время пишет ошибки, и замкнутый круг получается...

Понимаю, что мои вопросы абсолютно примитивные для Вашего уровня, Дмитрий, но ответьте, пожалуйста =)


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList