Вверх ↑
Этот топик читают: Гость
Ответов: 24
Рейтинг: 0
#1: 2007-04-04 07:54:09 ЛС | профиль | цитата
При множественном поиске в строке одного и того же символа, если брать позицию из самого компонента, почему-то она на единицу больше чем нужно.
Если же выходно значение записывать в переменную - всё нормально.

для примера:

Add(Position,9888936,231,210)
{
Target="-"
link(onSearch,2969437:doValue,[])
link(Str,5830266:Var3,[(237,191)])
}
Add(Delete,14266688,217,266)
{
link(onDelete,11588674:doText,[])
link(Str,5830266:Var2,[])
link(Count,9888936:Position,[])
}
Add(Memory,1278521,217,140)
{
Default=String(Фигня-чухня-толкотня)
}
Add(Memory,2969437,280,210)
{
}
Add(GetDataEx,5830266,210,182)
{
link(Data,1278521:Value,[])
}
Add(Button,11623978,105,210)
{
Left=45
Top=75
link(onClick,12181742:doFor,[])
}
Add(Label,11588674,273,266)
{
Left=135
Top=80
}
Add(For,12181742,154,210)
{
End=1
link(onEvent,9888936:doSearch,[])
link(onStop,14266688:doDelete,[(201,223)(201,272)])
}

обрезка происходит неверно, но если брать из правой переменной - всё пучком
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#2: 2007-04-04 09:13:43 ЛС | профиль | цитата
В момент события onSearch на точке Position присутствует именно позиция вхождения
А по окончании - позиция начала следующего поиска

Вот такая чухня.
И даже кажется, что это правильно
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#3: 2007-04-04 10:13:10 ЛС | профиль | цитата
Galkov писал(а):
И даже кажется, что это правильно

Position=Хранит позицию найденного вхождения строки Target в строку Str

а не
позиция начала следующего поиска

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#4: 2007-04-04 10:23:34 ЛС | профиль | цитата
Tad, и что, у тебя предложения есть, или ты думаешь, что я свои посты не читаю
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#5: 2007-04-04 12:08:29 ЛС | профиль | цитата
Если исходить из:
Position=Хранит позицию найденного вхождения строки Target в строку Str
onSearch=Событие происходит всякий раз при завершении поиска
то возникает мысль, что компонент работает не так, как "задумывалось разработчиками"
Предложения:
1) Изменить в ini-файле строки на
Position=Хранит позицию для начала поиска следующего вхождения строки Target в строку Str
onSearch=Событие происходит всякий раз при нахождении вхождения строки Target в строку Str

или
2) думать.

[size=-2]------ Добавлено в 11:22
code_1208.txt
хотя вот так вроде нормально

[size=-2]------ Добавлено в 12:08
и не понимаю почему
   if FPos <= 0 then FPos := 1; [/code]
а не 
   if FPos < 0 then FPos := 0; [/code]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_1208.txt [681B] [492]
Ответов: 9906
Рейтинг: 351
#6: 2007-04-04 12:20:21 ЛС | профиль | цитата
Tad писал(а):
Изменить в ini-файле строки на

не соответствует действительности.

[size=-2]------ Добавлено в 12:19
Tad писал(а):
хотя вот так вроде нормально

Так вот как раз не нормально

[size=-2]------ Добавлено в 12:20
Tad писал(а):
и не понимаю почему

И я не понимаю, чего ты не понимаешь
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#7: 2007-04-04 12:22:14 ЛС | профиль | цитата
Galkov писал(а):
Так вот как раз не нормально
почему?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#8: 2007-04-04 12:28:10 ЛС | профиль | цитата
Потому что не работает так, как продекларировано в тех же хинтах
Кто из нас профессиональный тестер: ты или я
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#9: 2007-04-04 12:57:55 ЛС | профиль | цитата
ткни пальчиком - лучше примером. не вижу конфликтов с продекларированым в хинтах
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#10: 2007-04-04 13:18:20 ЛС | профиль | цитата
Add(Position,9888936,189,175)
{
Target="Фи"
Point(doReset)
link(onSearch,6838838:doMessage,[])
link(Str,1278521:Value,[])
}
Add(Button,11623978,56,182)
{
Left=45
Top=75
link(onClick,13107861:doEvent1,[])
}
Add(Memory,1278521,189,105)
{
Default=String(Фигня-чухня-толкотня)
}
Add(Message,6838838,238,175)
{
}
Add(Hub,13107861,112,182)
{
link(onEvent1,9888936:doReset,[])
link(onEvent2,9888936:doSearch,[(166,195)(166,181)])
}
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#11: 2007-04-04 13:38:31 ЛС | профиль | цитата
как последнего
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#12: 2007-04-04 13:59:39 ЛС | профиль | цитата
Ну если честно, то я сначала пропустил добавленный else (из-за неправильного выравнивания)
А поскольку "прокрякал" - пришлось найти
А вот о таком стоит подумать
procedure THIPosition._work_doReset;
begin
FPos := 0;
end;
Может в этом и есть великая сермяжная правда...
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#13: 2007-04-04 16:36:48 ЛС | профиль | цитата
Тогда наверное и это
if FPos < 0 then FPos := 0 ; //это для дуракоустойчивости


[size=-2]------ Добавлено в 16:36
Да и Galkov, проверь code_1210.txt
или я зарапортовался или прийдется открывать тему "Странная хрень с компонентом FormatStr"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_1210.txt [605B] [464]
Разработчик
Ответов: 26270
Рейтинг: 2142
#14: 2007-04-04 16:42:51 ЛС | профиль | цитата
Tad, это вот так работает code_1211.txt
карма: 22

0
файлы: 1code_1211.txt [692B] [559]
Ответов: 16884
Рейтинг: 1239
#15: 2007-04-04 17:06:23 ЛС | профиль | цитата
Как сделать, чтобы работало я и сам знаю, а вот почему не работает моя схема, хотя там вроде все правильно. Или Вячеславу в Хелп - "Знаете ли Вы, что
Для правильной работы компонента FormatStr необходимо переменные обязательно подавать на верхние точки (или что-то в этом роде)"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)