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

Gor

Well-known member
07.06.2005
517
1
#1
Всем доброго время суток!
Разбираю сообщения которые приходят мне в базу... обычное memo...
Вот там в поле body следующее:

wwwwwwwwww
wwwwwwwwwwww
wwwwwwwwwwwww

три строки но они идут в столбик...и разделителей между строками нету...
когда получаю поле body естественно мне вылазит одна строка wwwwww[][]wwwwwwwww[][]wwwwwwwwwww
я так понимаю что [][] - это Chr(10) ?
пытаюсь её разбирать... не выходит ничего...
Попытался так получить хотя бы первую строку:
Код:
jj = doc.body
j1 = Strleft(jj,Chr(10))
значение j1 - пустое(
вроде бы все функции пересмотрел...никак придумать не могу как это реализовать...
Неужели новую строку нельзя считать как разделитель? Или может ещё какие нибудь функции есть как нибудь ожет проще сделать можно*?
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
Милейший вы работаете с RT полем!
jj = doc.body??!!!! вы что десь хатите получить???

как мин. через массив, с Ubound(боди)


Код:
Function ArrayExplode(var1 As Variant, str1 As String) As Variant
ArrayExplode = NewArray()

Dim rez1 As String, rez2 As String
rez1 = var1
aa:
If Instr(rez1, str1)>0 Then
rez2 = Strleft(rez1, str1)
ArrayExplode = Fulltrim(Arrayappend(ArrayExplode, rez2))
rez1 = Strright(rez1, str1)
Goto aa
Else
ArrayExplode = Fulltrim(Arrayappend(ArrayExplode, rez1))
End If
End Function
Код разбирает строку var1, на основаниии разделителя str1 и возвращает массив ArrayExplode, без повторений (Fulltrim)



З,Ы, Я по два раза я по два раза, не повторяю не повторяю
 
30.05.2006
1 345
11
#3
Милейший вы работаете с RT полем!
jj = doc.body??!!!! вы что десь хатите получить???

как мин. через массив, с Ubound(боди)
Что интересно, у RT-полей item.Values не массив! По кр.мере вплоть до 5-ки так было, позже не смотрел.
Но разбирать RT-values как строку - в любом случае бесполезно. item.Text - еще туда-сюда...
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
<!--QuoteBegin-Constantin A Chervonenko+3:11:2006, 08:53 -->
<span class="vbquote">(Constantin A Chervonenko @ 3:11:2006, 08:53 )</span><!--QuoteEBegin-->Что интересно, у RT-полей item.Values не массив!
[snapback]47041" rel="nofollow" target="_blank[/snapback]​
[/quote]

Хэлп 6,4,5

Syntax
To get: valueArray = notesItem.Values
To set: notesItem.Values = valueArray
а вот пример
Код:
Dim doc As NotesDocument
'...set value of doc...
Dim item As NotesItem
Set item = doc.GetFirstItem( "Subject" )
Forall v In item.Values
Messagebox( v ) 
End Forall
 

Gor

Well-known member
07.06.2005
517
1
#5
Для: Morpheus
Милейший вы работаете с RT полем!
jj = doc.body??!!!! вы что десь хатите получить???
получаю я здесь строку...
И что получается я не получу значение так - doc.body из RTF поля?????
Раньше я прекрасно разбирал поле body как строку и получал через doc.body... единственно в ней были разделители - "+"
так почему это бесполезно? Единственно что изменилось это разделитель...

по разделителю +
Код:
		fb = doc.Body
ss = Strleft(fb,"+",1) ' Номер изменения + статус + HW
'		ss = Mid$(ss,1,Len(ss)-1)
s1 = Strleft(ss," ",1) ' Номер изменения 
s2 = Strright(ss," ",1) ' статус + HW
s3 = Strleft(s2," ",1) ' статус
s4 = Strright(s2," ",1) ' HW
s6 = Strright(fb,"+",1)' Причина Reject
Какой смысл делать через массив? и почему именно НЕЛЬЗЯ её читать как я это делаю, ну и в принципе раньше делал?
не ну если НАДО и это ОБЯЗАТЕЛЬНО .... то придётся
у меня просто сообщение не будет никогда состоять из 100 строчек... максимум из 5 - ти..
 

Gor

Well-known member
07.06.2005
517
1
#6
попробовал так

jj = doc.body
j1 = Strleft(jj,Chr(10)+Chr(13))

в j1 записалась вся строка body как и в jj...видимо и такой разделитель не понял...

мне кажется здесь вопрос не в том как прочитать RT поле, а как разобраться с разделителем,
хотя может я и не прав...?!


P.S. свой дублирующий топик удалить не смог...
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
а разделитель точно Char(10) , может 9(Tab)... или вообще какойто другой?

может постараться выхватить символ разделителя???
 

Gor

Well-known member
07.06.2005
517
1
#8
Для: Morpheus
Текст в поле написан в столбик....
в дебаггере поле выглядит так:
wwwwww[][]wwwwwwwww[][]wwwwwwwwwww

Вот я и не знаю что это за разделитель точно... предполагаю что Char(10)..

Код:
может постараться выхватить символ разделителя???
Возможно...но к сожалению не знаю как это сделать?
пытался уже так...чтобы хотя бы первую строку отделить
Код:
jj = doc.body
j1 = Strleft(jj,Chr(10))
А где нибудь полный список кодов символов взять можно?
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
2: Gor
проверить InStr наличие Chr(10), есть подозрение что разделитель не пробел, не энтер, не таб...

выделить []....
' Assign the leftmost 2 characters in "ABC".
Dim subString As String
subString$ = Left$("ABC", 2)
Print subString$ ' Output: "AB"
Что делаете Вы... просто для себя Left в цикл, проходитесь и получаете все коды, всех символов в строке.... и всё... так Вы узнаете код и разделителя [] тоже

А где нибудь полный список кодов символов взять можно? - Chr/Uni + Help там таблица символов
 

Gor

Well-known member
07.06.2005
517
1
#10
Для: Morpheus
Всё получилось спасибо!
код действительно 10 - Chr(10), получил его с помощью Left и Asc()
а разделитель банальный))) - Chr(10)+Chr(10)