Страница 1 из 1

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

СообщениеДобавлено: 27.01.2013 (Вс) 23:25
№№№№№
Добрый день, уважаемые участники форума.

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

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

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

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

Проект прилагаю. Аналог в VBA также имеется (в Test.doc).

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

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

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

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)?
Все время пишет ошибки, и замкнутый круг получается...

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