• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Notesrichtextrange

imendan

Green Team
22.09.2010
159
4
BIT
0
Здравствуйте, господа! B)
С Наступающим Всех Новым Годом!
Ситуация: в поле NotesRichTextItem указываются ссылки на другие элементы + строка описания..
cc Текст с описанием документа1
cc Текст с описанием документа2
cc Текст с описанием документа3
cc Текст с описанием документа4
-(где сс - это ссылка)
Проблема: после удаления программным кодом(после нажатия кнопочки) ссылки и текста к нему, остается пустая строка.
cc Текст с описанием документа1
cc Текст с описанием документа2

cc Текст с описанием документа4

Вопрос: Как можно избавиться от лишней строки?
Код кнопочки:
Код:
Set rti = doc.GetFirstItem("LinkDocs")
Set rtnav = rti.CreateNavigator

If rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH) Then
Set rtrange = rti.CreateRange
c = 0
Do
Redim Preserve ca© As Variant
Call rtrange.SetBegin(rtnav)			
ca©=Cstr(c+1) & ". " & Fulltrim(rtrange.TextParagraph)
c = c + 1
Loop While rtnav.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
Else
Messagebox "В документе нет связок",, "Уведомление системы!"
Exit Sub
End If
']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]
Dim result As Variant
Dim delRow As Integer	'Номер строки для удаления
result = ws.Prompt(PROMPT_OKCANCELLIST, "Выбор", "Выберите документ для очистки связи", ca(0), ca)
delRow = Cint(Strleft(result, "."))
']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]
If Not rtnav.FindNthElement(RTELEM_TYPE_TEXTPARAGRAPH, delRow) Then
Messagebox "Element " & delRow%,, "Cannot find element"
Exit Sub
End If
Set rtrange = rti.CreateRange
Call rtrange.SetBegin(rtnav)
Call rtrange.SetEnd(rtnav)
If Messagebox("Вы действительно хотите удалить данную связку?", 4+32, rtrange.TextParagraph) = 6 Then
Call rtrange.Remove	

If Not rtnav.FindNthElement(RTELEM_TYPE_DOCLINK, delRow) Then
Messagebox "Элемент " & delRow%,, "Элемент не найден"
Exit Sub
End If

Set rtlink = rtnav.GetElement		
rtlink.Remove

Call rti.Compact
Call rti.Update
Call doc.Save(True, False)
Call ws.CurrentDocument.Close(True)
End If
B) Помогите!
 
N

nvyush

Может просто копировать нужную информацию в нужном виде во временное рт-поле, потом удалять старое рт-поле и копировать временное под нужным именем?
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Может просто копировать нужную информацию в нужном виде во временное рт-поле, потом удалять старое рт-поле и копировать временное под нужным именем?

Хорошая идея! Но хотелось бы не усложнять процесс удаления линков, а найти оптимальный вариант.
 
T

turumbay

Но хотелось бы не усложнять процесс удаления линков, а найти оптимальный вариант.
есть еще вариант не использовать RT поле, а хранить ссылки в многозначном поле в виде server:replica:unid, отрисовывая их например через passthruhtml. т.е. хранить данные отдельно от их представления.
оно проще кодится и сопровождается, легко переносится на веб и т.п.
из недостатков - пресловутые 64K.
 
Мы в соцсетях:

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