Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2019-08-17 16:54:43 ЛС | профиль | цитата
Igor08 писал(а):
Такая программа работает. Значит у меня в программе чем-то неправильно

Не факт, что работает. Попробуйте загрузить в StrList какой-нибудь файл побольше...
Упадет нахрен, да и все.
Общее правило таково: тестирование доказывает наличие ошибок при их проявлении. Но никогда не доказывает отсутствие ошибок при отсутствии этих проявлений
Как в Вашем случае. Следовательно, сделанный Вами вывод неверен (он противоречит вышеозначенному правилу)



Поскольку Вы (по Вашим словам) ознакомились с "моделью паровозиков", будем говорить в ее терминах. Паровозики последовательно занимают следующие трассы:
1-й паровозик) Button.onClick -> ChanelToIndex.doWork1
2-й паровозик) ChanelToIndex.onIndex -> GetIndexData.doIndex
3-й паровозик) GetIndexData.onIndex -> Math.doOperation
4-й паровозик) Math.onResult -> Memory.doValue
5-й паровозик) Memory.onData -> Hub.doEvent1
6-й паровозик) Hub.onEvent1 -> Math.doOperation
7-й паровозик) Math.onResult -> If_else.doCompare
8-й паровозик) If_else.onFalse -> ArrayRW.doRead
9-й паровозик) ArrayRW.onRead -> ChanelToIndex.doWork2
Ну все - КЕРДЫК.
По крайней мере, следующая трасса ChanelToIndex.onIndex -> GetIndexData.doIndex все еще занята 2-м паровозиком.
И правильное функционирование станций (элементов) после такого крушения -- Вам никто не обещал.
Перечитайте внимательно ссылку:
Galkov писал(а):
Грубо говоря поведение схемы непредсказуемо. Может быть все что хочешь - просто неправильное поведение элемента, сопровождаемое вопросами на форуме; падение (типа AV) схемы; утечка памяти, ......... А иногда это и работает (у нас заложен некоторый запас прочности).



Мораль:
КОЛЬЦЕВАНИЕ а в схемах HiAsm - недопустимо, в общем случае. А ЦИКЛ делается примерно так (типа, хочешь сравнивать ручками - да на здоровье):
Add(MainForm,6807042,217,238)
{
Width=232
Height=617
link(onCreate,9870318:doEnabled,[])
}
Add(StrList,16119185,609,168)
{
Strings=#1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|
Point(String)
Point(doReplace)
}
Add(Button,9870318,294,252)
{
@Hint=#13:Кнопка расчет|
Left=48
Top=520
Width=100
Height=30
Font=[Times New Roman,14,0,0,204]
Enabled=1
Name="Расчет"
Caption="Расчет"
Point(doEnabled)
link(onClick,1955385:doEvent1,[])
AddHint(-33,-53,89,13,@Hint)
}
Add(Math,16344848,476,266)
{
@Hint=#5:Index|
Op2=1
ResultType=0
Default=-1
Point(doClear)
link(onResult,6686851:doCompare,[])
link(Op1,14146580:Var1,[(482,257)(461,257)(461,313)])
AddHint(-9,-59,41,13,@Hint)
AddHint(26,-29,30,13,Op2)
}
Add(If_else,6686851,546,266)
{
Type=1
link(onTrue,15080711:doRead,[])
link(onFalse,5311589:doStop,[(585,279)(585,321)(389,321)(389,279)])
link(Op2,16119185:Count,[(559,243)(622,243)])
}
Add(ArrayRW,15080711,623,266)
{
link(onRead,15975876:doString,[])
link(Array,16119185:Array,[])
}
Add(Repeat,5311589,399,266)
{
link(onRepeat,16344848:doOperation,[])
}
Add(Hub,1955385,357,252)
{
OutCount=3
link(onEvent1,14237922:doClear,[(382,258)(382,251)(718,251)(718,279)])
link(onEvent2,16344848:doClear,[(438,265)(438,279)])
link(onEvent3,5311589:doRepeat,[])
}
Add(Memo,14237922,742,266)
{
Left=42
Top=14
Width=105
Height=490
ScrollBars=2
}
Add(FormatStr,15975876,679,266)
{
Mask="%1) %2"
link(onFString,14237922:doAdd,[])
link(Str1,14146580:Var3,[(685,257)(671,257)(671,313)])
}
Add(GetDataEx,14146580,476,308)
{
link(Data,16344848:Result,[])
}

--- Добавлено в 2019-08-17 16:59:50

Кстати говоря, пользоваться текстовым редактором для копирования схем - необязательно.
Просто выделяешь нужное на рабочем поле HiAsm - и копируешь. Вставляешь на форум.
И наоборот: копируешь с форума - и вставляешь это прямо на рабочее поле.
карма: 9

0
Редактировалось 2 раз(а), последний 2019-08-17 17:00:48