• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Чтение данных из таблицы в ричтекст-поле

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
вот фрагмент кода
Код:
	Set body = doc.GetFirstItem("SwitchByDepRT")
Set rtnav = body.CreateNavigator
Set rtrange = body.CreateRange

...

Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE )
Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL )

While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)

Call rtrange.SetBegin(rtnav)
tmp = rtrange.TextRun

Wend
на проверке вхождения в цикл возникает ошибка Position is no valid
Подскажите.. что не так?
 
A

Akupaka

а ты результат FindFirstElement используй, а не слепо вызываешь FindNextElement
похоже, что не найден первый элемент...

Код:
if rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) then
...
While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)
...

аа... прошу прощения, может быть, что цикл прошел несколько итераций и ошибка возникает когда уже все ячейки пройдены...
не пользовал эти методы, может проще всего поставить просто обработчик этой ошибки и пропускать ее...
on error XXX resume next
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
дело в том, что захода в цикл даже небыло :)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
А ты проверку сделал как Akupaka написал?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Так ты не ставь обработчик ошибок. Он здесь не нужен.
Наверное у тебя Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) вернуло false. Где в этом случае находится указатель не понятно, поэтому на rtnav.FindNextElement( RTELEM_TYPE_TABLECELL) появляется ошибка.
В принципе можно сразу искать ячейку. Т.е. Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE ) можно выкинуть.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
прошу прощения.... но похоже вопрос снимается...
Похоже что с таблицей в тестовом документе что-то было... что именно не знаю.... взял новый документ - вроде бы все нормально
 
A

Akupaka

ты от ответа-то не уходи :))
код должен уметь обрабатывать такие ситуации, поэтому лучше разрулить до...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!