Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1: 2014-07-30 01:48:06 ЛС | профиль | цитата
Товарищи подскажите как посчитать количество пустых элементов

перебор элементов с помощью Str_Enum
строка:
a) ;;;;;;;;; - 9 элементов
b) 1;1;1;1;1;1;1;1;1;1 - 10 элементов, 9 разделителей ";"


Как посчитать пустые элементы строки? В строке ;;;;;;;;; по факту пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто - 10 элементов и 9 символов разделителей.

jQuery например ;;; считает за 3 элемента строки. Это баг самого Str_Enum или я чего-то не понимаю?

карма: 0

0
Ответов: 704
Рейтинг: 44
#2: 2014-07-30 09:56:29 ЛС | профиль | цитата
Gunnman писал(а):
a) ;;;;;;;;; - 9 элементов
Так!
Gunnman писал(а):
b) 1;1;1;1;1;1;1;1;1;1 - 10 значений, 9 разделителей ";"

А сколько должно быть разделителей межу 10 - ю значениями? все верно 9 ";"
Gunnman писал(а):
Как посчитать пустые элементы строки? В строке ;;;;;;;;; по факту пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто;пусто - 10 элементов и 9 символов разделителей.

jQuery например ;;; считает за 3 элемента строки.
.
Не понятно, что ты имеешь виду элементы? Что нужно выявить в строке? пустоту между ";?;?;1;2;3" сколько пустых значений межу ";". Конкретней вопросик.
карма: 0

0
Ответов: 327
Рейтинг: 5
#3: 2014-07-30 10:03:06 ЛС | профиль | цитата
Если я тебя правильно понял, то
Add(Edit,2021630,525,224)
{
Left=5
Top=5
Width=90
Text="1;1;1;1;1;1;1;1;1;1"
}
Add(Str_Enum,3452700,525,266)
{
Delimiter=""
link(onEnum,3273564:doCompare,[])
link(String,2021630:Text,[])
}
Add(Button,1986244,420,252)
{
Left=5
Top=35
Width=70
Caption="Посчитать"
link(onClick,5688612:doEvent1,[])
}
Add(Label,717425,749,266)
{
Left=95
Top=40
Caption=""
}
Add(CounterEx,6311878,658,266)
{
Max=10000
Point(doReset)
link(onNext,2292027:doString,[])
}
Add(LineBreak,9492589,616,273)
{
link(Out,6311878:doReset,[])
Primary=[2193977,-126,-21]
}
Add(Hub,5688612,462,252)
{
OutCount=3
link(onEvent1,2193977:In,[])
link(onEvent2,11386199:In,[])
link(onEvent3,3452700:doEnum,[])
}
Add(FormatStr,2292027,700,266)
{
Mask="Количество "элементов" : %1"
link(onFString,717425:doText,[])
}
Add(Label,542329,749,308)
{
Left=95
Top=60
Caption=""
}
Add(CounterEx,4823840,658,308)
{
Max=10000
Point(doReset)
link(onNext,7620070:doString,[])
}
Add(FormatStr,7620070,700,308)
{
Mask="Количество разделителей : %1"
link(onFString,542329:doText,[])
}
Add(LineBreak,11668079,616,315)
{
link(Out,4823840:doReset,[])
Primary=[11386199,-126,-56]
}
Add(If_else,3273564,567,266)
{
Type=5
Op2=String(;)
link(onTrue,6311878:doNext,[])
link(onFalse,4823840:doNext,[(610,279)(610,314)])
}


Для подсчета всех символов без разбора, убери компонент If_else
карма: 0

0
Ответов: 8928
Рейтинг: 823
#4: 2014-07-30 11:06:48 ЛС | профиль | цитата
Gunnman, если нет последнего значения (или первого при направлении счёта Reverse) то он и не считается -- строка заканчивается разделителем. ИМХО логично.
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#5: 2014-07-30 13:21:54 ЛС | профиль | цитата
Когда я предложил этот компонент, то код выглядел так :

#pas
procedure THIStr_Enum._work_doEnum;
var s:string;
Ind:integer;
begin
s:=ReadString(_Data,_data_String,');
if s = ' then exit;
if _prop_Delimiter = ' then // выдаем поcимвольно
........
........
else // иначе делим по делимитеру
begin
Ind:=0;
s := s + _prop_Delimiter; // здесь к исходной строке добавлялся "лишний" делимитер
// кто и почему удалил эту строчку - вопрос конечно интересный
......
......
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8928
Рейтинг: 823
#6: 2014-07-30 14:34:56 ЛС | профиль | цитата
Tad, тогда уж надо добавлять и в начало и искать строго между разделителями, хотя и тут не на всех пользователей угодишь
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#7: 2014-07-30 14:54:11 ЛС | профиль | цитата
в начало при Reverse.
в конец при Forward.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8928
Рейтинг: 823
#8: 2014-07-30 15:31:09 ЛС | профиль | цитата
Gunnman, для полного счастья BlockFind code_34096.txt
карма: 19

0
файлы: 1code_34096.txt [2.4KB] [214]
Гость
Ответов: 17029
Рейтинг: 0
#9: 2014-07-30 16:21:59 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 23:45:06
карма: 0

0
Ответов: 8928
Рейтинг: 823
#10: 2014-07-30 17:10:11 ЛС | профиль | цитата
77.106.199.84 писал(а):
..имеет смысл поправить код..
Ну уж нет! Мы привыкли! [flood]Был на работе кабельный канал закрытый квадратами из рифлёнки, а в одном месте квадрат имел вид ромба и лежал на двух углах, весь народ знал и перешагивал это место. Но вот приехала КОМИССИЯ, все сплошь большие чины в сопровождении нашего начальства, и конечно в этом месте один из чинов наступил на ромб и чуть не упал. (Мы, младшие разных специальностей, были разогнаны по своим углам, чтобы не мельтешили, но собрались у дозиков, пялились на начальство по промышленному телевидению и видели конфуз, причём кто-то сказал: "Сейчас наступит!") [/flood]
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#11: 2014-07-30 17:10:27 ЛС | профиль | цитата
77.106.199.84 писал(а):
может имеет смысл поправить код Str_Enum?
Все права переданы nesco
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)