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

Тема в разделе "Lotus - Программирование", создана пользователем DarkFly, 14 июл 2009.

  1. DarkFly

    DarkFly Гость

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    не совсем понятно?
    Для эвалюте все равно на сколько много утебя собака-комманд.
    это как? Сплит ничего не эвалютирует!
    Код давай
     
  3. DarkFly

    DarkFly Гость

    я разделитель использую пробел
     
  4. K-Fire

    K-Fire Гость

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

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

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

    DarkFly Гость

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

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    tmp = Evaluate({"Уважаемый клиент " + @username+"у вас назначена встреча в " + @text(@now)})
    Messagebox tmp(0)
     
  7. DarkFly

    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 разобьет " "
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    не правильно!
    Сам подумай, сколько пробелов у тебя может встретиться в @-комманде?
    Тут скорее подойдет такое
    Код (Text):
    tmp=Split(StrTmp,"##")
    И пользуйся форуме секцией "код". А то твой код читать не удобно

    а вообще, тут дело говорят
     
  9. Omh

    Omh Lotus team
    Lotus team

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    код работы с RT полем
    http://codeby.net/forum/threads/30933.html?vi...st&p=142444
    xDoc - документ в кот могут присут. поля для шаблона
    rtitem - поле РТ, кот. содержит шаблоны для подстановки в разделителях ${...}
    прочитать особенности ;) ниже
     
  11. DarkFly

    DarkFly Гость

    всем спасибо, разобрался
     
Загрузка...

Поделиться этой страницей