• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Заменить таблицу в Richtext поле.

  • Автор темы Автор темы wowa
  • Дата начала Дата начала
W

wowa

RichText поле содержит текст и таблицы, мне нужно после определенной строки (например «Искомая строка»), удалить таблицу и на ее место вставить другую.

Я делаю следующим образом:

Код:
Rem Удаляю таблицу

Call rtnav.FindFirstString("Искомая строка",RT_FIND_CASEINSENSITIVE)

Call rtnav.FindNextElement(RTELEM_TYPE_TABLE)

Set rtTable = rtnav.GetElement

Call rtTable.Remove

Rem Определяю место для вставки таблицы

Call rtnav.FindFirstString("Искомая строка” RT_FIND_CASEINSENSITIVE)

Call rtitem.BeginInsert( rtnav,True) ‘(*)

Call rtitem.AddNewLine(1)

Call rtitem.AppendTable(4, 3)

Call rtitem.EndInsert
……
(*) Если True , то таблицу вставляет после всего текста в документе, если false – то перед искомой строкой.

Как сделать, чтобы таблица вставлялась вместо удаленной таблицы?
 
Может после удаления таблицы поставь на тот место какой-либо маркер, и потом после второго
Код:
Call rtnav.FindFirstString("Искомая строка” RT_FIND_CASEINSENSITIVE)
переходи на свой свежевставленный маркер, удаляй его и встявляй таблицу?
 
С маркером та же проблема, я его не могу поставить на место удаленной таблицы, он ставиться либо выше, либо после всего текста….
 
Давненько не работал с richText - всё из башки повылетало.
Слушай, там не может быть rtRange замешан?

Будет где-то в коде
Код:
Call rtitem.BeginInsert(rtRange, False)
, где rtRange - часть ричтекста, где раньше была таблица.

Мне кажется надо что-то такое.
 
Ну тогда фик знает.
Как вариант через DXL сделать, но это так, в качестве запасного.
 
мммм... есть предложение.. правда наверное не очень удобное
После этого
Код:
Rem Определяю место для вставки таблицы
Call rtnav.FindFirstString("Искомая строка" RT_FIND_CASEINSENSITIVE)
я написал такое ( "Искомая строка" у меня заканчивается "." )
Код:
Call rtnav.FindNextString(".")
Помогло. Таблица вставляется после точки
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab