Вверх ↑
Этот топик читают: Гость
Ответов: 32
Рейтинг: 0
#1: 2019-08-16 18:13:41 ЛС | профиль | цитата
Список строк StrList перебирается с помощью ArrayEnum нормально. Если выбирать строки по индексу с помощью ArrayRW, выполнение программы завершается с кодом исключения c0000005.
Hiasm 4.05 186. Win7x64. Intel3. В чем может быть ошибка.l

Редактировалось 1 раз(а), последний 2019-08-16 19:04:29
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 16492
Рейтинг: 1210
#2: 2019-08-17 11:50:19 ЛС | профиль | цитата
Igor08 писал(а):
выполнение программы завершается с кодом исключения c0000005.
Программа где?
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 32
Рейтинг: 0
#3: 2019-08-17 12:24:52 ЛС | профиль | цитата

карма: 0

0
Ответов: 9820
Рейтинг: 340
#4: 2019-08-17 13:02:09 ЛС | профиль | цитата
Это кольцевание.
Смотри, например, сюда: https://forum.hiasm.com/post/293674

--- Добавлено в 2019-08-17 13:04:42

Блин, где Леонид, самый главный учитель по "вставлению схемы на форум".............

Редактировалось 3 раз(а), последний 2019-08-17 13:11:02
карма: 8

0
Ответов: 32
Рейтинг: 0
#5: 2019-08-17 13:32:53 ЛС | профиль | цитата
Не знаю. У меня же стоит условие в цикле, если равно количеству строк в списке, цикл заканчивается. Он вообще не работает.

--- Добавлено в 2019-08-17 13:35:24

Эта же программа, но с такой частью схемы, работает.

Редактировалось 1 раз(а), последний 2019-08-17 13:35:24
карма: 0

0
Ответов: 9820
Рейтинг: 340
#6: 2019-08-17 13:42:10 ЛС | профиль | цитата
Igor08, без обид, ты читать умеешь

Так ПРОЧИТАЙ
Тебе же ссылку на пост дали. Неплохо даже наизусть заучить.
Ну не виноват я, что там больше 256 символов.



В первой картинке КОЛЬЦЕВАНИЕ, а во второй - ЦИКЛ
Научишься схемы выкладывать (а не картинки) - будет более предметный разговор....
карма: 8

0
Ответов: 32
Рейтинг: 0
#7: 2019-08-17 13:53:06 ЛС | профиль | цитата
Так в первой картинке есть условие, при достижении равенства с количеством строк, цикл должен останавливаться. Наверно я чего-то не понимаю.
карма: 0

0
Ответов: 9820
Рейтинг: 340
#8: 2019-08-17 14:00:17 ЛС | профиль | цитата
Galkov писал(а):
Так ПРОЧИТАЙ
Тебе же ссылку на пост дали. Неплохо даже наизусть заучить.
Так прочитал, или нет

Igor08 писал(а):
Наверно я чего-то не понимаю.
Тебе дали ТЕКСТ. Покажи, пожалуйста, пальцем, какое же слово в этом тексте тебе непонятно

Редактировалось 3 раз(а), последний 2019-08-17 14:01:16
карма: 8

0
Ответов: 32
Рейтинг: 0
#9: 2019-08-17 14:02:55 ЛС | профиль | цитата
Прочитал. Не понимаю в программировании. У меня по схеме вроде все последовательно работает.

--- Добавлено в 2019-08-17 14:29:33


Вот более полная схема первой картинки-схемы.

Редактировалось 1 раз(а), последний 2019-08-17 14:29:33
карма: 0

0
Ответов: 297
Рейтинг: 4
#10: 2019-08-17 14:41:57 ЛС | профиль | цитата
Igor08, у тебя наверное где-то тут ошибка.

карма: 1

0
Ответов: 32
Рейтинг: 0
#11: 2019-08-17 15:01:17 ЛС | профиль | цитата
Последовательность вставки элементов в программу влияют на работу программы?

--- Добавлено в 2019-08-17 15:32:08



Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,126,105)
{
Width=823
Height=601
link(onCreate,9870318:doEnabled,[])
}
Add(StrList,16119185,567,63)
{
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,259,119)
{
@Hint=#13:Кнопка расчет|
Left=370
Top=520
Width=100
Height=30
Font=[Times New Roman,14,0,0,204]
Enabled=1
Name="Расчет"
Caption="Расчет"
Point(doEnabled)
link(onClick,8382913:doWork1,[(324,125)(324,230)])
AddHint(-106,67,89,13,@Hint)
}
Add(Label,4019049,497,385)
{
Left=75
Top=230
Width=235
Height=25
link(Text,12727791:Var2,[(503,299)(636,299)])
}
Add(ChanelToIndex,8382913,357,224)
{
link(onIndex,8618945:doIndex,[])
}
Add(GetIndexData,8618945,427,224)
{
link(onIndex,13823871:doOperation,[])
link(Data1,12929573:Var,[])
link(Data2,12727791:Var1,[(440,208)])
}
Add(GlobalVar,12929573,427,168)
{
Name="0"
Data=Integer(0)
}
Add(Math,13823871,518,224)
{
@Hint=#5:Op2=1|
Op2=1
ResultType=0
link(onResult,10496451:doValue,[(614,230)(614,167)])
link(Op1,8618945:Var,[(524,212)(478,212)(478,268)(433,268)])
AddHint(-19,-63,47,13,@Hint)
}
Add(Memory,10496451,679,161)
{
link(onData,15951530:doEvent1,[])
}
Add(Hub,15951530,742,161)
{
link(onEvent1,16344848:doOperation,[(805,167)(805,292)(618,292)(618,398)])
link(onEvent2,4019049:doText,[(784,174)(784,277)(485,277)(485,391)])
}
Add(Math,16344848,630,392)
{
@Hint=#5:Op2=1|
Op2=1
ResultType=0
link(onResult,6686851:doCompare,[])
link(Op1,7110170:Var2,[(636,302)(650,302)])
AddHint(-92,47,47,13,@Hint)
}
Add(If_else,6686851,749,392)
{
Type=4
link(onFalse,15080711:doRead,[(814,405)(814,398)])
link(Op1,16344848:Result,[(755,380)(695,380)(695,436)(636,436)])
link(Op2,16119185:Count,[(762,243)(580,243)])
}
Add(ArrayRW,15080711,847,392)
{
link(onRead,8382913:doWork2,[(891,398)(891,318)(345,318)(345,237)])
link(Array,16119185:Array,[(853,138)(587,138)])
link(Index,11890981:Var2,[(860,302)(671,302)])
}
Add(GetDataEx,12727791,630,203)
{
Angle=1
link(Data,7110170:Var1,[])
}
Add(GetDataEx,7110170,644,203)
{
Angle=1
link(Data,11890981:Var1,[])
}
Add(GetDataEx,11890981,665,203)
{
Angle=1
link(Data,10496451:Value,[(685,208)])
}
Такая программа работает. Значит у меня в программе чем-то неправильно.
Моя программа работает только с ArrayEnum.

Редактировалось 1 раз(а), последний 2019-08-17 15:32:08
карма: 0

0
Ответов: 8353
Рейтинг: 776
#12: 2019-08-17 16:16:04 ЛС | профиль | цитата
Igor08, а такая схема работает ?
Схема


Add(MainForm,11280936,112,105)
{
Width=823
Height=601
link(onCreate,9870318:doEnabled,[])
}
Add(StrList,16119185,287,35)
{
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,161,119)
{
@Hint=#13:Кнопка расчет|
Left=370
Top=520
Width=100
Height=30
Font=[Times New Roman,14,0,0,204]
Enabled=1
Name="Расчет"
Caption="Расчет"
Point(doEnabled)
link(onClick,11832118:doEvent1,[])
AddHint(-46,53,89,13,@Hint)
}
Add(Label,4019049,420,126)
{
Left=75
Top=230
Width=235
Height=25
}
Add(For,2295807,245,126)
{
IncludeEnd=1
link(onEvent,5628548:doRead,[])
link(End,16119185:Count,[(258,96)(300,96)])
}
Add(ArrayRW,5628548,301,126)
{
link(onRead,7686596:doOperation,[])
link(Array,16119185:Array,[])
}
Add(Math,7686596,357,126)
{
Point(doClear)
link(onResult,4019049:doText,[])
link(Op1,7686596:Result,[(363,117)(349,117)(349,166)(363,166)])
}
Add(Hub,11832118,210,119)
{
link(onEvent1,7686596:doClear,[(340,125)(340,139)])
link(onEvent2,2295807:doFor,[])
}

карма: 14

0
Ответов: 9820
Рейтинг: 340
#13: 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 - и копируешь. Вставляешь на форум.
И наоборот: копируешь с форума - и вставляешь это прямо на рабочее поле.

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

0
Ответов: 32
Рейтинг: 0
#14: 2019-08-17 17:32:53 ЛС | профиль | цитата
Все примеры работают. Да действительно StrList не хочет работать с большим количеством строк. А какое максимальное количество строк в него можно записать и какая максимальная длина строк может быть?
карма: 0

0
Ответов: 9820
Рейтинг: 340
#15: 2019-08-17 17:46:09 ЛС | профиль | цитата
Igor08 писал(а):
А какое максимальное количество строк в него можно записать и какая максимальная длина строк может быть?

Блин.........
У меня скоро цензурные слова закончатся. Совсем.

Если пользоваться ЦИКЛОМ, то пока память в компе не закончится.
А с КОЛЬЦЕВАНИЕМ -- нисколько. Просто НИЗЯ, и все.
карма: 8

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