• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

DarkFly

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

K-Fire

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

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

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

DarkFly

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

Kizarek86

Green Team
20.07.2007
871
7
BIT
42
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 948
609
BIT
250
код работы с RT полем
https://codeby.net/threads/30933.html?vi...st&p=142444
xDoc - документ в кот могут присут. поля для шаблона
rtitem - поле РТ, кот. содержит шаблоны для подстановки в разделителях ${...}
прочитать особенности ;) ниже
 
Мы в соцсетях:

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