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

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

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

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

Разбор строки

  • Автор темы DarkFly
  • Дата начала
D

DarkFly

Добрый день, необходима помощь.
Есть строка допустим "Уважаемый клиент ##@UserName у вас назначена встреча ##@Now"
Разбил split и обрабатывал каждое значение. Но есть, одно но, если будет использоваться сложная формула ##@UserName+" "+...., то уже сплит не поможет сэвалюэтить формулу. Помогите плиз разобраться.
Заранее спасибо
 
K

K-Fire

Правильно ли я понял, что используется стандартная идея: есть строка шаблона почтового сообщения в которой присутствуют некие "тэги", которые затем должны заменится на что-то вычисляемое?

Если да, то используйте не только открывающий признак, но и закрывающий. Т.е. "Уважаемый клиент <##@UserName##> у вас назначена встреча <##@Now##>".

И не будет никакого гемороя с попытками вычислить сложную формулу.
 
D

DarkFly

М-т есть у кого пример кода, заранее спасибо
 

Kizarek86

Green Team
20.07.2007
871
7
BIT
38
tmp = Evaluate({"Уважаемый клиент " + @username+"у вас назначена встреча в " + @text(@now)})
Messagebox tmp(0)
 
D

DarkFly

Это понятно, но я наверное неправильно объяснил. Есть поле в нем значение, которое выше, м-т содержать как название полей так и @ формулы.
Мой код след.:
If Instr(strTmp, "##") Then
tmp=Split(StrTmp," ")
For i=0 To Ubound(tmp)
If Instr(tmp(i),"##") Then
strTmp=Right( tmp(i), Len( tmp(i)) - 2 )
Result = Evaluate(strTmp, dcDoc)
tmp(i)=result(0)
End If
i=i+1
Next
End If
strTmp1=Implode(tmp," ")
Но если в данном поле допусти будет @UserName+" "+@Now, то у меня уже вычислить его не получиться, т.к. Split разобьет " "
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
не правильно!
Сам подумай, сколько пробелов у тебя может встретиться в @-комманде?
Тут скорее подойдет такое
Код:
tmp=Split(StrTmp,"##")

И пользуйся форуме секцией "код". А то твой код читать не удобно

а вообще, тут дело говорят
 
O

Omh

K-Fire уже всё сказал.
Используй открывающий и закрывающий тег, тогда будет понятно, где началась/кончилась формула.

Правда, можно и так, как kizarek предложил.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
код работы с RT полем
https://codeby.net/threads/30933.html?vi...st&p=142444
xDoc - документ в кот могут присут. поля для шаблона
rtitem - поле РТ, кот. содержит шаблоны для подстановки в разделителях ${...}
прочитать особенности ;) ниже
 
Мы в соцсетях:

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