Почему точка *Index=Хранит индекс найденной строки|3|1
в случае doGetString - не выдает индекс найденой строки
code_14862.txt
Вернее почему, я и так знаю. А почему так ?
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
|
|||
карма: 25 |
| ||
файлы: 1 | code_14862.txt [1.8KB] [154] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Это защита "от дурака" действием Exit; если такой строки нет
|
|||
карма: 10 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
я не понял какая постановка задачи решается продемонстрированным примером? Если нужно получить индекс элемента, если тавой есть и -1, если такового нет, то не проще ли воспользоваться элементом If и не городить того, что показано выше?
|
|||
карма: 27 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
А я понял:
---Не правильно я понял, башка дырка, глаза впадины--- |
|||
карма: 10 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Dilma, речь о том, что в StrList есть строка или нет - все равно на точке Index стоит -1.
|
|||
карма: 25 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
А-а, странно, раньше все работало верно
|
|||
карма: 10 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
И приходится городить If на точке String, что не всегда удобно.
А если применяешь и doGetIndex и doGetString, то нужен двойной огород. А точка StrList.Index работает только при StrToFind |
|||
карма: 25 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
----
|
|||
карма: 10 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Assasin писал(а): А я понял:
Дело все в том, что событием onGetIndex выдается -1 если строки нет, а с точки Index берется Null или отсутствие данных, что противоречит выходным данным onGetIndex можно узнать в какой момент и где Tad, говорил о проблемах с onGetIndex? Tad писал(а): речь о том, что в StrList есть строка или нет - все равно на точке Index стоит -1.метод doGetString ищет строку по индексу. Это значит, что результатом работы метода является строка, которую можно получить с точки String. Почему и для чего данный метод должен сохранять поданный на него индекс - не известно. Если в схеме выше была сделана попытка провести аналогию с элементом ListBox, то она весьма не удачна - его Index является свойством контрола и присутствует у него всегда вне зависимости от методов, которые используются в схеме. ------------ Дoбавленo в 19.02: Tad писал(а): А если применяешь и doGetIndex и doGetString, то нужен двойной огород.вот и следует продемонстрировать это "если" |
|||
карма: 27 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Dilma писал(а): Почему и для чего данный метод должен сохранять поданный на него индекс - не известно.Каждый думает посвоему. ИМХО считаю, что если есть точка Index то на ней всегда должна быть -1 если строки нет, или индекс строки если она есть, не зависимо от того каким методом идет поиск - по индексу, по строке или по верхним точкам StrToFind или IdxToSelect. |
|||
карма: 25 |
| ||
Голосовали: | filyaxxxcom |
Ответов: 485
Рейтинг: 86
|
|||
Tad писал(а): ИМХО считаю, что если есть точка Index то на ней всегда должна быть -1 если строки нет, или индекс строки если она есть, не зависимо от того каким методом идет поиск - по индексу, по строке или по верхним точкам StrToFind или IdxToSelect. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
filyaxxxcom, я поступаю по другому - ставлю ListBox, отлаживаю (визуально !) схему и потом меняю ListBox на StrList.
И если не исползуется точка Index, то всё получается отлично. А если нужно получить и строку и ее индекс, то начинаются пляски с бубном, потому что и точка вроде есть, а висит на ней -1. И никакой If_Else не поможет. |
|||
карма: 25 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Tad писал(а): А если нужно получить и строку и ее индекс, то начинаются пляски с бубном, потому что и точка вроде есть, а висит на ней -1Еще раз, для тех, кто в танке -- приведи пример, где в режиме doGetString, ну просто необходимо, действующее значение Index, и почему нельзя Dilma писал(а): воспользоваться элементом Ifна точке onGetString К тому же, уже был задан вопрос Dilma писал(а): вот и следует продемонстрировать это "если"------------ Дoбавленo в 01.34: filyaxxxcom писал(а): Такое поведение значительно облегчает составление схем и экономит времяПример в студию, как облегчает, будем посмотреть. |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, не хочу я спорить.
Нет - нет. Вот здесь для получения строки приходится подавать индекс через Memory, чтобы запомнить индекс и потом эту строку удалить. А если бы на точке Index был индекс, а не -1, то эта задача решалась бы проще (без Memory) Когда предлагаешь - добавить в компонент нижнюю точку или событие , то сразу поднимается крик: "Ты чего! Увеличатся коды ! Поставь пару компонент и нет вопроса" А то, что эти пару компонент увеличат результирующие коды в разы по сравнению с той строчкой - никого не колышит. Нет - значит нет. |
|||
карма: 25 |
| ||
файлы: 1 | ii.png [2.7KB] [293] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Добавил и привел в соответствие значение String для doGetIndex. Теперь все это хозяйство соответствует ListBox-y
------------ Дoбавленo в 02.13: Tad писал(а): Увеличатся кодыЭто увеличатся для тех, кто не использует эти точки в этих методах, но код там, в натуре, копеечный. Да и не думаю я, что кто-то использует эти методы в большом цикле, так что говорить о влиянии на быстродействие тут не приходится. |
|||
карма: 22 |
| ||
Голосовали: | Tad, filyaxxxcom, Assasin |