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

  • Автор темы Gor
  • Дата начала
G

Gor

Всем доброго время суток!
Разбираю сообщения которые приходят мне в базу... обычное memo...
Вот там в поле body следующее:

wwwwwwwwww
wwwwwwwwwwww
wwwwwwwwwwwww

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

morpheus

Милейший вы работаете с 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
12
BIT
0
Милейший вы работаете с RT полем!
jj = doc.body??!!!! вы что десь хатите получить???

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

morpheus

<!--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
 
G

Gor

Для: 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 - ти..
 
G

Gor

попробовал так

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

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

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


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

morpheus

а разделитель точно Char(10) , может 9(Tab)... или вообще какойто другой?

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

Gor

Для: Morpheus
Текст в поле написан в столбик....
в дебаггере поле выглядит так:
wwwwww[][]wwwwwwwww[][]wwwwwwwwwww

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

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

morpheus

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 там таблица символов
 
G

Gor

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

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