Вверх ↑
Этот топик читают: Гость
Ответов: 207
Рейтинг: 14
#1: 2020-07-03 12:00:06 ЛС | профиль | цитата
Странная работа точек doReplace и Str

Add(MainForm,2953706,364,210)
{
link(onCreate,15059324:doData,[])
}
Add(Replace,663293,490,224)
{
SubStr="2"
link(onReplace,2953706:doCaption,[(537,230)(537,272)(338,272)(338,216)])
link(Str,7987530:Value,[])
}
Add(DoData,15059324,427,224)
{
Data=String(проверка)
link(onEventData,663293:doReplace,[])
}
Add(Memory,7987530,490,175)
{
Default=String(123)
}

карма: 2

0
Ответов: 4630
Рейтинг: 749
#2: 2020-07-03 12:36:39 ЛС | профиль | цитата
И чего странного? Заменить символ "2" (SubStr) в строке "123" (Str) на строку "проверка" (Dest).
Строка в Dest попадает из потока, поскольку для нее не указано ни значение в свойстве, ни на верхней точке (как в SubStr и Str). Это поведение (порядок выбора данных из потока) описано в справке.


Странно, а почему верхняя точка в компоненте записана как "Sub_str"? Что-то мешало назвать её как и свойство "SubStr"?

Редактировалось 1 раз(а), последний 2020-07-03 12:38:16
карма: 26

0
Ответов: 207
Рейтинг: 14
#3: 2020-07-03 13:04:02 ЛС | профиль | цитата
Netspirit писал(а):
Это поведение (порядок выбора данных из потока)

Спасибо, не знал.
карма: 2

0
Ответов: 8926
Рейтинг: 823
#4: 2020-07-03 13:10:11 ЛС | профиль | цитата
Netspirit писал(а):
записана как "Sub_str"

А это у кого как
Replace.jpg
карма: 19

0
Ответов: 4630
Рейтинг: 749
#5: 2020-07-03 13:25:30 ЛС | профиль | цитата
Леонид, верхняя точка.
карма: 26

0
Ответов: 8926
Рейтинг: 823
#6: 2020-07-03 14:47:54 ЛС | профиль | цитата
Netspirit, ой, и правда
И прецедентов более не нашёл Может Dilma тайный смысл заложил
карма: 19

0
Ответов: 207
Рейтинг: 14
#7: 2020-07-04 12:39:15 ЛС | профиль | цитата
А почему ArrayFind не находит строку?
В свойстве index = 0. Значение из потока должно идти на value.

Add(MainForm,2828732,413,210)
{
link(onCreate,15059324:doData,[])
}
Add(DoData,15059324,483,224)
{
Data=String(строка1)
link(onEventData,9906168:doFind,[])
}
Add(StrList,15792200,539,154)
{
Strings=#7:строка1|7:строка2|7:строка3|
}
Add(ArrayFind,9906168,553,224)
{
link(onFind,2828732:doCaption,[(592,230)(592,202)(403,202)(403,216)])
link(Array,15792200:Array,[])
}
карма: 2

0
Ответов: 8926
Рейтинг: 823
#8: 2020-07-04 12:57:08 ЛС | профиль | цитата
Joiner, на вторую точку "Индекс..." ничего не подано, поэтому ваша строка для поиска читается в индекс и не доходит до "строка для поиска".
"0" в свойствах в данном случае означает "свойство не указано", что в общем-то не очень правильно.
Add(MainForm,2828732,581,147)
{
}
Add(StrList,15792200,504,77)
{
Strings=#7:строка1|7:строка2|7:строка3|
}
Add(ArrayFind,9906168,518,147)
{
link(onFind,2828732:doCaption,[])
link(Array,15792200:Array,[])
link(Index,2262433:Value,[(531,131)(559,131)])
}
Add(Button,5114762,350,147)
{
Left=20
Top=5
link(onClick,11080412:doStrCat,[])
}
Add(Memory,2262433,553,91)
{
Default=Integer(0)
}
Add(Edit,4935553,406,91)
{
Left=80
Top=5
Width=30
Text="2"
DataType=2
}
Add(StrCat,11080412,399,147)
{
Str1="строка"
link(onStrCat,10465181:doEvent1,[])
link(Str2,4935553:Text,[])
}
Add(Label,12018038,469,154)
{
Left=125
Top=10
}
Add(Hub,10465181,441,147)
{
link(onEvent1,9906168:doFind,[])
link(onEvent2,12018038:doText,[])
}


Редактировалось 1 раз(а), последний 2020-07-04 12:58:28
карма: 19

0
Ответов: 207
Рейтинг: 14
#9: 2020-07-04 13:02:04 ЛС | профиль | цитата
Леонид писал(а):
"0" в свойствах в данном случае означает "свойство не указано", что в общем-то не очень правильно.

Я про это и говорю, выходит "0" можно указать только на точку.
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#10: 2020-07-04 13:09:49 ЛС | профиль | цитата
Joiner, можно и так.

Add(MainForm,2828732,399,161)
{
}
Add(StrList,15792200,329,147)
{
Strings=#7:строка1|7:строка2|7:строка3|
Point(doGetIndex)
Point(onGetIndex)
Point(doGetString)
Point(onGetString)
link(onGetIndex,15792200:doGetString,[(375,160)(375,206)(317,206)(317,188)])
link(onGetString,2828732:doCaption,[])
}
Add(Button,5114762,168,175)
{
Left=20
Top=5
link(onClick,11080412:doStrCat,[])
}
Add(Edit,4935553,224,119)
{
Left=80
Top=5
Width=30
Text="2"
DataType=2
}
Add(StrCat,11080412,217,175)
{
Str1="строка"
link(onStrCat,10465181:doEvent1,[])
link(Str2,4935553:Text,[])
}
Add(Label,12018038,280,182)
{
Left=125
Top=10
}
Add(Hub,10465181,259,175)
{
link(onEvent1,15792200:doGetIndex,[])
link(onEvent2,12018038:doText,[])
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Joiner
Главный модератор
Ответов: 2999
Рейтинг: 396
#11: 2020-07-04 13:11:00 ЛС | профиль | цитата
Леонид писал(а):
что в общем-то не очень правильно

Леонид, «много копий было сломано» по поводу правила чтения данных при обращении к левым точкам. Но ничего более разумного предложено не было. В принципе можно вообще отказаться от верхних точек, но в некоторых случаях они удобны для наглядности происходящего. В данном же случае, достаточно изменить у свойства Index значение по умолчанию на -1 например. Но никто на это не пойдет из-за «проблем совместимости с гипотетическими никому неизвестными в природе схемами».
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 8926
Рейтинг: 823
#12: 2020-07-04 15:19:48 ЛС | профиль | цитата
Nic, более разумного и нет Но когда "0" не считается за "установленное" свойство, здесь или, к примеру в "Plotter" свойство MinH, то и возникают подобные коллизии
карма: 19

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#13: 2020-07-04 16:50:36 ЛС | профиль | цитата
Nic писал(а):
В данном же случае, достаточно изменить у свойства Index значение по умолчанию на -1 например. Но никто на это не пойдет из-за «проблем совместимости с гипотетическими никому неизвестными в природе схемами».

А кто мешает это сделать только для себя? В среде вроде все необходимое для этого есть, и даже не надо лезть в компоненты. Достаточно установить нужное значение один раз и нажать зеленую галочку внизу свойств компонента. В папке %Hiasm%\Elements\Delphi\prof\ создастся файл формата <Name>%cur.prf, который будет менять свойства на нужные всегда, когда компонент будет помещаться на поле. Если хотите вернуться в каком-то компоненте на дефолтные значения, то просто удалите нужный <Name>%cur.prf

Редактировалось 1 раз(а), последний 2020-07-04 16:54:35
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#14: 2020-07-04 17:01:32 ЛС | профиль | цитата
nesco писал(а):
А кто мешает это сделать только для себя?

nesco, создание шаблона здесь не причём. Речь идёт о невозможности использования свойства для значения 0:
Joiner писал(а):
Я про это и говорю, выходит "0" можно указать только на точку.

карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 8926
Рейтинг: 823
#15: 2020-07-04 17:05:25 ЛС | профиль | цитата
nesco, в случае с графиком это не поможет, мне нужен график от "0" до "10", а он, паразит, начинает автоматически выбирать нижний диапазон
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)