Вверх ↑
Этот топик читают: Гость
Ответов: 1535
Рейтинг: 176
#1: 2013-11-03 15:34:03 ЛС | профиль | цитата
Название темы говорит само за себя. Идея скорее всего не нова, но мне она пришла только сегодня.

Дело в том, что я создаю при помощи динамических контейнеров одни и те же схемы, соответственно, каждая схема внутри каждого контейнера работает независимо от всех остальных. Внутренние значения в конкретном контейнере постоянно меняются из разных мест его же схемы, и чтобы не создавать пересекающие связи, я применяю Memory + LineBreakEx или LineBreak. Но в таком случае их количество начинает сбивать столку. Остаётся применение GlobalVar, но он действует глобально, а значит его применение неоправдано.

Вот тут-то я и подумал о локальной переменной типа LocalVar, которая будет действительна только внутри конкретного контейнера и нигде больше.
У кого какие будут мнения?

Add(MainForm,14969659,252,98)
{
Width=447
Height=224
link(onCreate,4974307:doFor,[])
}
Add(MultiElementEx,5644722,539,119)
{
@Hint=#4:Room|
Mode=1
link(onAdd,2745433:doValue,[])
}
BEGIN_SDK
Add(EditMultiEx,15134340,28,21)
{
WorkCount=#5:##add|8:##select|
EventCount=#5:onAdd|
VarCount=#7:##count|
Width=1259
Height=753
Point(##add)
Point(##select)
Point(##count)
link(##add,14837716:doSeparateMT,[(55,27)(55,76)])
link(##select,2992998:doEvent1,[(49,34)(49,650)])
}
Add(LineBreakEx,2555678,1176,112)
{
@Color=255
Caption="Var1"
Type=3
link(_Data,1310326:Value,[])
}
Add(LineBreakEx,10935522,1113,63)
{
@Color=255
Caption="Var1"
Type=1
link(OnEvent,1310326:doValue,[])
}
Add(MT_MultiData,14837716,70,70)
{
Count=9
link(onData1,3872419:doWork,[])
link(onData2,16712019:doWork,[])
link(onData3,13168607:doWork,[])
link(onData4,5277928:doWork,[])
link(onData5,6564428:doWork,[])
link(onData6,1602821:doWork,[])
link(onData7,10973952:doWork,[])
link(onData8,11304885:doWork,[])
link(onData9,5895896:doValue,[])
}
Add(LineBreakEx,3872419,287,70)
{
@Color=255
Caption="Var1"
}
Add(LineBreakEx,13168607,175,84)
{
@Color=255
Caption="Var3"
}
Add(LineBreakEx,16712019,231,77)
{
@Color=255
Caption="Var2"
}
Add(LineBreakEx,5277928,112,91)
{
@Color=255
Caption="Var4"
}
Add(Hub,2992998,77,644)
{
OutCount=9
link(onEvent1,666656:doEvent1,[(140,650)(140,174)])
link(onEvent2,7576226:doEvent1,[(140,657)(140,244)])
link(onEvent3,9819056:doEvent1,[(140,664)(140,314)])
link(onEvent4,4477834:doEvent1,[(140,671)(140,384)])
link(onEvent5,3280817:doEvent1,[(140,678)(140,461)])
link(onEvent6,16153829:doEvent1,[(140,685)(140,531)])
link(onEvent7,4665647:doEvent1,[(140,692)(140,601)])
link(onEvent8,13279734:doEvent1,[(140,699)(140,671)])
link(onEvent9,1536185:doAdd,[])
}
Add(Math,4898375,189,168)
{
Op2=2
link(onResult,3972653:doWork,[])
link(Op1,15261828:getVar,[])
}
Add(LineBreakEx,15261828,189,140)
{
@Color=255
Caption="Var1"
Type=2
}
Add(LineBreakEx,3972653,231,168)
{
@Color=255
Caption="Var1"
}
Add(Math,12979305,189,238)
{
Op2=2
link(onResult,1162813:doWork,[])
link(Op1,2127769:getVar,[])
}
Add(LineBreakEx,2127769,189,210)
{
@Color=255
Caption="Var2"
Type=2
}
Add(LineBreakEx,1162813,231,238)
{
@Color=255
Caption="Var2"
}
Add(Math,6215926,189,308)
{
Op2=2
link(onResult,9098760:doWork,[])
link(Op1,10096168:getVar,[])
}
Add(LineBreakEx,10096168,189,280)
{
@Color=255
Caption="Var3"
Type=2
}
Add(LineBreakEx,9098760,231,308)
{
@Color=255
Caption="Var3"
}
Add(Math,3408603,189,378)
{
Op2=2
link(onResult,16134008:doWork,[])
link(Op1,12324412:getVar,[])
}
Add(LineBreakEx,12324412,189,350)
{
@Color=255
Caption="Var4"
Type=2
}
Add(LineBreakEx,16134008,231,378)
{
@Color=255
Caption="Var4"
}
Add(Memory,1310326,1176,63)
{
@Color=5614335
}
Add(LineBreakEx,1207157,1134,140)
{
@Color=255
Caption="Var2"
Type=3
link(_Data,5671208:Value,[])
}
Add(LineBreakEx,5964162,1071,91)
{
@Color=255
Caption="Var2"
Type=1
link(OnEvent,5671208:doValue,[])
}
Add(Memory,5671208,1134,91)
{
@Color=5614335
}
Add(LineBreakEx,4898395,1085,168)
{
@Color=255
Caption="Var3"
Type=3
link(_Data,13283508:Value,[])
}
Add(LineBreakEx,10117916,1022,119)
{
@Color=255
Caption="Var3"
Type=1
link(OnEvent,13283508:doValue,[])
}
Add(Memory,13283508,1085,119)
{
@Color=5614335
}
Add(LineBreakEx,13103569,1036,196)
{
@Color=255
Caption="Var4"
Type=3
link(_Data,10761709:Value,[])
}
Add(LineBreakEx,10189077,973,147)
{
@Color=255
Caption="Var4"
Type=1
link(OnEvent,10761709:doValue,[])
}
Add(Memory,10761709,1036,147)
{
@Color=5614335
}
Add(MT_AddData,1536185,826,700)
{
Count=9
InputMT=3
PColor(Data9,11184640)
link(onAdd,15134340:onAdd,[(1240,706)(1240,27)])
link(Data1,13736857:getVar,[])
link(Data2,8133232:getVar,[])
link(Data3,7515876:getVar,[])
link(Data4,1648765:getVar,[])
link(Data5,5769223:getVar,[])
link(Data6,7594005:getVar,[])
link(Data7,6148255:getVar,[])
link(Data8,15477923:getVar,[])
link(Data9,5895896:Value,[(888,404)(769,404)])
}
Add(LineBreakEx,13736857,826,525)
{
@Color=255
Caption="Var1"
Type=2
}
Add(LineBreakEx,8133232,833,546)
{
@Color=255
Caption="Var2"
Type=2
}
Add(LineBreakEx,7515876,840,567)
{
@Color=255
Caption="Var3"
Type=2
}
Add(LineBreakEx,1648765,847,588)
{
@Color=255
Caption="Var4"
Type=2
}
Add(Math,1882398,189,455)
{
Op2=2
link(onResult,7997:doWork,[])
link(Op1,3346296:getVar,[])
}
Add(LineBreakEx,3346296,189,427)
{
@Color=255
Caption="Var5"
Type=2
}
Add(LineBreakEx,7997,231,455)
{
@Color=255
Caption="Var5"
}
Add(Math,7757356,182,525)
{
Op2=2
link(onResult,5657209:doWork,[])
link(Op1,7903547:getVar,[])
}
Add(LineBreakEx,7903547,182,497)
{
@Color=255
Caption="Var6"
Type=2
}
Add(LineBreakEx,5657209,231,525)
{
@Color=255
Caption="Var6"
}
Add(Math,11115125,182,595)
{
Op2=2
link(onResult,15958796:doWork,[])
link(Op1,15491891:getVar,[])
}
Add(LineBreakEx,15491891,182,567)
{
@Color=255
Caption="Var7"
Type=2
}
Add(LineBreakEx,15958796,231,595)
{
@Color=255
Caption="Var7"
}
Add(Math,12039936,182,665)
{
Op2=2
link(onResult,4374589:doWork,[])
link(Op1,16544327:getVar,[])
}
Add(LineBreakEx,16544327,182,637)
{
@Color=255
Caption="Var8"
Type=2
}
Add(LineBreakEx,4374589,231,665)
{
@Color=255
Caption="Var8"
}
Add(LineBreakEx,4968942,994,224)
{
@Color=255
Caption="Var5"
Type=3
link(_Data,2224815:Value,[])
}
Add(LineBreakEx,685528,931,175)
{
@Color=255
Caption="Var5"
Type=1
link(OnEvent,2224815:doValue,[])
}
Add(Memory,2224815,994,175)
{
@Color=5614335
}
Add(LineBreakEx,5628214,952,252)
{
@Color=255
Caption="Var6"
Type=3
link(_Data,13498638:Value,[])
}
Add(LineBreakEx,13980028,889,203)
{
@Color=255
Caption="Var6"
Type=1
link(OnEvent,13498638:doValue,[])
}
Add(Memory,13498638,952,203)
{
@Color=5614335
}
Add(LineBreakEx,10837482,903,280)
{
@Color=255
Caption="Var7"
Type=3
link(_Data,3070354:Value,[])
}
Add(LineBreakEx,15008074,840,231)
{
@Color=255
Caption="Var7"
Type=1
link(OnEvent,3070354:doValue,[])
}
Add(Memory,3070354,903,231)
{
@Color=5614335
}
Add(LineBreakEx,4843500,854,308)
{
@Color=255
Caption="Var8"
Type=3
link(_Data,1005286:Value,[])
}
Add(LineBreakEx,9447538,791,259)
{
@Color=255
Caption="Var8"
Type=1
link(OnEvent,1005286:doValue,[])
}
Add(Memory,1005286,854,259)
{
@Color=5614335
}
Add(LineBreakEx,6564428,287,98)
{
@Color=255
Caption="Var5"
}
Add(LineBreakEx,10973952,175,112)
{
@Color=255
Caption="Var7"
}
Add(LineBreakEx,1602821,231,105)
{
@Color=255
Caption="Var6"
}
Add(LineBreakEx,11304885,112,119)
{
@Color=255
Caption="Var8"
}
Add(LineBreakEx,5769223,854,609)
{
@Color=255
Caption="Var5"
Type=2
}
Add(LineBreakEx,7594005,861,630)
{
@Color=255
Caption="Var6"
Type=2
}
Add(LineBreakEx,6148255,868,651)
{
@Color=255
Caption="Var7"
Type=2
}
Add(LineBreakEx,15477923,875,672)
{
@Color=255
Caption="Var8"
Type=2
}
Add(Memory,5895896,763,126)
{
Default=Integer(0)
}
Add(Math,12220216,476,175)
{
OpType=1
Op2=2
link(onResult,14166391:doWork,[])
link(Op1,7494180:getVar,[])
}
Add(LineBreakEx,7494180,476,147)
{
@Color=255
Caption="Var1"
Type=2
}
Add(LineBreakEx,14166391,518,175)
{
@Color=255
Caption="Var1"
}
Add(Math,5892505,476,245)
{
OpType=1
Op2=2
link(onResult,5373674:doWork,[])
link(Op1,2767830:getVar,[])
}
Add(LineBreakEx,2767830,476,217)
{
@Color=255
Caption="Var2"
Type=2
}
Add(LineBreakEx,5373674,518,245)
{
@Color=255
Caption="Var2"
}
Add(Math,3745219,476,315)
{
OpType=1
Op2=2
link(onResult,16743715:doWork,[])
link(Op1,1469765:getVar,[])
}
Add(LineBreakEx,1469765,476,287)
{
@Color=255
Caption="Var3"
Type=2
}
Add(LineBreakEx,16743715,518,315)
{
@Color=255
Caption="Var3"
}
Add(Math,15822876,476,385)
{
OpType=1
Op2=2
link(onResult,3412355:doWork,[])
link(Op1,2289964:getVar,[])
}
Add(LineBreakEx,2289964,476,357)
{
@Color=255
Caption="Var4"
Type=2
}
Add(LineBreakEx,3412355,518,385)
{
@Color=255
Caption="Var4"
}
Add(Math,1559115,476,455)
{
OpType=1
Op2=2
link(onResult,15951615:doWork,[])
link(Op1,14100886:getVar,[])
}
Add(LineBreakEx,14100886,476,427)
{
@Color=255
Caption="Var5"
Type=2
}
Add(LineBreakEx,15951615,518,455)
{
@Color=255
Caption="Var5"
}
Add(Math,16469712,476,525)
{
OpType=1
Op2=2
link(onResult,14045044:doWork,[])
link(Op1,14511547:getVar,[])
}
Add(LineBreakEx,14511547,476,497)
{
@Color=255
Caption="Var6"
Type=2
}
Add(LineBreakEx,14045044,525,525)
{
@Color=255
Caption="Var6"
}
Add(Math,4762567,476,602)
{
OpType=1
Op2=2
link(onResult,11786526:doWork,[])
link(Op1,12258279:getVar,[])
}
Add(LineBreakEx,12258279,476,574)
{
@Color=255
Caption="Var7"
Type=2
}
Add(LineBreakEx,11786526,525,602)
{
@Color=255
Caption="Var7"
}
Add(Math,14469651,476,672)
{
OpType=1
Op2=2
link(onResult,4807108:doWork,[])
link(Op1,7846224:getVar,[])
}
Add(LineBreakEx,7846224,476,644)
{
@Color=255
Caption="Var8"
Type=2
}
Add(LineBreakEx,4807108,525,672)
{
@Color=255
Caption="Var8"
}
Add(Math,7033184,623,182)
{
Op2=2
link(onResult,12069542:doWork,[])
link(Op1,15049230:getVar,[])
}
Add(LineBreakEx,15049230,623,154)
{
@Color=255
Caption="Var1"
Type=2
}
Add(LineBreakEx,12069542,665,182)
{
@Color=255
Caption="Var1"
}
Add(Math,946084,623,252)
{
Op2=2
link(onResult,7052353:doWork,[])
link(Op1,6806189:getVar,[])
}
Add(LineBreakEx,6806189,623,224)
{
@Color=255
Caption="Var2"
Type=2
}
Add(LineBreakEx,7052353,665,252)
{
@Color=255
Caption="Var2"
}
Add(Math,13715478,623,322)
{
Op2=2
link(onResult,6775922:doWork,[])
link(Op1,9824002:getVar,[])
}
Add(LineBreakEx,9824002,623,294)
{
@Color=255
Caption="Var3"
Type=2
}
Add(LineBreakEx,6775922,665,322)
{
@Color=255
Caption="Var3"
}
Add(Math,16258504,623,385)
{
Op2=2
link(onResult,14825370:doWork,[])
link(Op1,5526314:getVar,[])
}
Add(LineBreakEx,5526314,623,357)
{
@Color=255
Caption="Var4"
Type=2
}
Add(LineBreakEx,14825370,665,385)
{
@Color=255
Caption="Var4"
}
Add(Math,1258842,623,462)
{
Op2=2
link(onResult,11539120:doWork,[])
link(Op1,11149312:getVar,[])
}
Add(LineBreakEx,11149312,623,434)
{
@Color=255
Caption="Var5"
Type=2
}
Add(LineBreakEx,11539120,665,462)
{
@Color=255
Caption="Var5"
}
Add(Math,16675688,623,532)
{
Op2=2
link(onResult,13753476:doWork,[])
link(Op1,13145937:getVar,[])
}
Add(LineBreakEx,13145937,623,504)
{
@Color=255
Caption="Var6"
Type=2
}
Add(LineBreakEx,13753476,672,532)
{
@Color=255
Caption="Var6"
}
Add(Math,11116212,623,609)
{
Op2=2
link(onResult,4506500:doWork,[])
link(Op1,9061032:getVar,[])
}
Add(LineBreakEx,9061032,623,581)
{
@Color=255
Caption="Var7"
Type=2
}
Add(LineBreakEx,4506500,672,609)
{
@Color=255
Caption="Var7"
}
Add(Math,16521520,623,679)
{
Op2=2
link(onResult,3940311:doWork,[])
link(Op1,420992:getVar,[])
}
Add(LineBreakEx,420992,623,651)
{
@Color=255
Caption="Var8"
Type=2
}
Add(LineBreakEx,3940311,672,679)
{
@Color=255
Caption="Var8"
}
Add(InfoTip,2100829,413,28)
{
Info=#188:Изменение значений может быть и больше. И это только по 8 пунктам. Имена псевдо-переменных я отобразил для удобства восприятия одним именем. На деле всё, конечно же, будет куда запутанней.|
Font=[MS Sans Serif,12,1,0,1]
Width=337
Height=718
}
Add(Hub,666656,154,168)
{
@Color=65535
link(onEvent1,4898375:doOperation,[])
link(onEvent2,179837:doEvent1,[])
}
Add(Hub,7576226,154,238)
{
@Color=65535
link(onEvent1,12979305:doOperation,[])
link(onEvent2,7497813:doEvent1,[])
}
Add(Hub,9819056,154,308)
{
@Color=65535
link(onEvent1,6215926:doOperation,[])
link(onEvent2,16454033:doEvent1,[])
}
Add(Hub,4477834,154,378)
{
@Color=65535
link(onEvent1,3408603:doOperation,[])
link(onEvent2,15476686:doEvent1,[])
}
Add(Hub,3280817,154,455)
{
@Color=65535
link(onEvent1,1882398:doOperation,[])
link(onEvent2,13160291:doEvent1,[(242,468)(242,461)])
}
Add(Hub,16153829,154,525)
{
@Color=65535
link(onEvent1,7757356:doOperation,[])
link(onEvent2,1031999:doEvent1,[(242,538)(242,531)])
}
Add(Hub,4665647,154,595)
{
@Color=65535
link(onEvent1,11115125:doOperation,[])
link(onEvent2,9080912:doEvent1,[])
}
Add(Hub,13279734,154,665)
{
@Color=65535
link(onEvent1,12039936:doOperation,[])
link(onEvent2,15883900:doEvent1,[])
}
Add(Hub,179837,357,175)
{
@Hint=#15:Другие процессы|
@Color=65535
link(onEvent1,12220216:doOperation,[])
link(onEvent2,7033184:doOperation,[])
AddHint(-59,-26,105,13,@Hint)
}
Add(Hub,7497813,357,245)
{
@Color=65535
link(onEvent1,5892505:doOperation,[])
link(onEvent2,946084:doOperation,[])
}
Add(Hub,16454033,357,315)
{
@Color=65535
link(onEvent1,3745219:doOperation,[])
link(onEvent2,13715478:doOperation,[])
}
Add(Hub,15476686,357,385)
{
@Color=65535
link(onEvent1,15822876:doOperation,[])
link(onEvent2,16258504:doOperation,[(501,398)(501,391)])
}
Add(Hub,13160291,357,455)
{
@Color=65535
link(onEvent1,1559115:doOperation,[])
link(onEvent2,1258842:doOperation,[])
}
Add(Hub,1031999,357,525)
{
@Color=65535
link(onEvent1,16469712:doOperation,[])
link(onEvent2,16675688:doOperation,[])
}
Add(Hub,9080912,357,602)
{
@Color=65535
link(onEvent1,4762567:doOperation,[])
link(onEvent2,11116212:doOperation,[])
}
Add(Hub,15883900,357,672)
{
@Hint=#15:Другие процессы|
@Color=65535
link(onEvent1,14469651:doOperation,[])
link(onEvent2,16521520:doOperation,[])
AddHint(-77,-36,105,13,@Hint)
}
END_SDK
Add(Timer,11012172,434,161)
{
Interval=100
Enable=1
link(onTimer,5872257:doFor,[])
}
Add(MT_AddData,12517520,441,119)
{
Count=9
Data=Integer(0)
InputMT=3
link(onAdd,5644722:##add,[])
link(Data1,15198660:Value1,[])
link(Data2,15198660:Value2,[])
link(Data3,15198660:Value3,[])
link(Data4,15198660:Value4,[])
link(Data5,15198660:Value5,[])
link(Data6,15198660:Value6,[])
link(Data7,15198660:Value7,[])
link(Data8,15198660:Value8,[])
link(Data9,5644722:##count,[(503,107)(527,107)(527,163)(545,163)])
}
Add(Random,9607006,399,77)
{
Max=1000
link(onRandom,15198660:doValue,[])
}
Add(FormatStr,13922849,630,119)
{
DataCount=8
Mask="%1
%2
%3
%4
%5
%6
%7
%8"
link(onFString,1890287:doEvent,[])
}
Add(Label,68836,833,119)
{
Left=30
Top=15
Width=85
Height=150
AutoSize=1
}
Add(For,3612100,350,112)
{
End=7
link(onEvent,9607006:doRandom,[(390,118)(390,83)])
link(onStop,12517520:doAdd,[])
}
Add(MemFIFO,15198660,441,77)
{
Count=8
}
Add(IndexToChanel,1890287,707,119)
{
Count=3
Point(Index)
link(onEvent1,68836:doText,[])
link(onEvent2,5695244:doText,[])
link(onEvent3,2756072:doText,[])
link(Index,2745433:Value1,[(713,107)(698,107)(698,163)(587,163)])
}
Add(For,4974307,294,112)
{
End=2
link(onEvent,3612100:doFor,[])
link(onStop,11012172:doTimer,[(341,125)(341,167)])
}
Add(Label,5695244,791,126)
{
Left=170
Top=15
Width=75
Height=150
AutoSize=1
}
Add(MT_MultiMem,2745433,581,119)
{
From=8
Count=1
link(onData,13922849:doString,[])
}
Add(Label,2756072,749,133)
{
Left=320
Top=15
Width=90
Height=150
AutoSize=1
}
Add(For,5872257,476,161)
{
End=2
link(onEvent,5644722:##select,[(519,167)(519,132)])
}

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
vip
#1.1контекстная реклама от партнеров
Ответов: 48
Рейтинг: 12
#2: 2013-11-03 18:16:28 ЛС | профиль | цитата
Я использую для этих целей LineBreakEx. Может не правильно но меня устраивает.
карма: 0

0
Ответов: 5227
Рейтинг: 588
#3: 2013-11-05 06:30:37 ЛС | профиль | цитата
все прелести визуального программирования ser_davkin, блин ну и портянка
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 1535
Рейтинг: 176
#4: 2013-11-05 08:49:29 ЛС | профиль | цитата
andrestudio писал(а):
ser_davkin, блин ну и портянка
Вот, вот! Обращение скорее к разработчикам, но прежде, хотелось бы услышать мнение об этом от Galkov-a (как от внештатного разработчика). Покопавшись в поиске, мне попадались пару тем, где об этом уже упоминалось.
http://forum.hiasm.com/forum.html?q=3&p=106697
http://forum.hiasm.com/forum.html?q=3&p=182413
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#5: 2013-11-05 10:47:39 ЛС | профиль | цитата
ser_davkin, я вот все понять не могу -- чем тебя Memory не устраивает, как раз локальная переменная, что компонент локальной переменной ставить, что брейк... какая разница
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#6: 2013-11-05 10:56:11 ЛС | профиль | цитата
nesco писал(а):
что компонент локальной переменной ставить, что брейк... какая разница
Два брейка + Memory
Эх, жизнь моя жестянка,
Да ну её в болото.
Живу я как поганка,
А мне летать, а мне летать,
А мне летать охота!


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#7: 2013-11-05 12:31:13 ЛС | профиль | цитата
Tad писал(а):
Два брейка + Memory

На один компонент ставить локальную переменную смысла нет, обычный Memory сойдет (можно еще и VisualStrings использоват в некоторых случаях), минимум две надо, те два компонента. С Memory получится плюс один вне зависимости от количества брейков. Смысл какой мудрить с локальной переменной, чтобы было
карма: 22

0
Ответов: 9906
Рейтинг: 351
#8: 2013-11-05 14:49:02 ЛС | профиль | цитата
ser_davkin писал(а):
хотелось бы услышать мнение об этом от Galkov-a

Сколько хотите. НО: сразу же принесу извинение за то, что мое образование фундаментальное, а способ мышления имеет склонность к обобщениям.
Кому покажется это чрезмерно сложным, просьба - не напрягаться. Кому непонятно, но интересно - вопросы для обсуждения принимаются. Естественно.

Тут нам (идеологам графического программирования) следует несколько модифицировать свою концепцию видимости/невидимости.
Напомню историю.
Поначалу думалось, что абсолютно все должно быть визуализировано. Типа, невидимая связь - источник ошибок, непонимания коллегами, и т.п..
Что и есть на самом деле.
Вот к примеру, моих программистов в HiAsm больше всего удивило то, с какой легкостью я могу изменить функционал программы "почти до наоборот". Для них (ЯВУ) переделки такого уровня сложности - отладка на несколько дней. А у меня – не более часа вместе с кодированием.

А немного попозже (когда уже тупо надоело воевать с "фанатами текста") пришло понимание того, что не всякая визуализация облегчает понимание основного функционирования.
Ну скажем, в динамических контейнерах порой приходится рисовать специфические схемы инициализации. И порой эта инициализация не меньше, чем схема основного функционала.
Поэтому и появляются всякие Break-и, GlobalVar-ы, и т.п. финтифлюшки, к которым я отнес бы и технологию интерфейсов.
Полезность от этого всего дела есть - при грамотном использовании меньше замутняют основную логику.
И вред - тоже есть. Собственно, сабж от этого и появился...

Мои соображения на эту тему: нам нужна такая среда разработки, в которой можно смотреть схему "частями". Типа как слои в CAD-подобных системах разработки.
На основном слое - основная схема, на другом - инициализация, на третьем - особо хитромудрая переконфигурация, и т.п..

ЕСЛИ БЫ мы имели такое счастье, тогда глобальные переменные были бы просто клиентами некого сервера (у нас это называется менеджерами). Собственно, по кодам - так оно и есть на самом деле.
Соединения этих клиентов с сервером лежали бы на неком невидимом (но который всегда можно включить, при желании) слое.

Ну вот. Вы имеете контейнер. На его самом верхнем уровне есть менеджер, хозяин всех гл.переменных, да и еще в состоянии невидимости (в смысле – на другом слое).
Делаете копию этого контейнера - получаете контейнер, но уже с другим менеджером.
Вот Вам и как бы "локальность"
Не хотите локальности - перемещайте менеджера на уровень выше по иерархии...



Это только наметки на идею. Полной "выстраданности" еще нет

карма: 9

0
Ответов: 655
Рейтинг: 18
#9: 2017-01-09 18:08:51 ЛС | профиль | цитата
Тема очень старая, но актуальность не теряет.

Идея Galkov насчет менеджеров отличная, но скорее всего ни кто не возьмется за такую глобальную переделку контейнеров (или новую разработку).
Поэтому спрошу прямо в лоб - кто сможет реализовать LocalVar?
Оплату гарантирую (возможна предоплата)
Варианты реализации на любой вкус :

вариант A)
видимость переменной в пределах 1 экземпляра multielementex (предпочтительный)
** мои познания в этой области скудны, но наверно возможна такая реализация - при инициализации экземпляра контейнера все LocalVar (или GlobalVar) находящиеся внутри и имеющие имя переименовываются по принципу "имя_перменной+индекс текущего экземпляра multielementex"
пример: переменная data, создали новый экземпляр - уже в нем все переменные data стали data1, в следующем экземпляре data2 и т.д.

вариант B)
имя переменной задается через верхнюю точку при первом обращении к переменной
**обращаемся к переменной если имя еще не присвоено - берем с верхней точки, в нижней точке выдаем значение переменной.

вариант C) ....

предложения по реализации ценам пишем не стесняемся.
п.с. компонент нужен на столько что готов оплатить разработку и поделится с общественностью, если конечно автор будет не против.

Редактировалось 1 раз(а), последний 2017-01-09 18:10:02
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#10: 2017-01-09 18:40:23 ЛС | профиль | цитата
Gunnman писал(а):
"имя_перменной+индекс текущего экземпляра multielementex"
пример: переменная data, создали новый экземпляр - уже в нем все переменные data стали data1, в следующем экземпляре data2 и т.д.

Оно так работать никогда не будет и не должно. В правильной реализации имя задается одно, но ссылается оно на одну переменную только в пределах одного контейнера. В пакете Windows сделать это на уровне простого элемента крайне сложно (я ,например, так на вскидку не могу сказать как). На основе менеджеров это тоже сделать не получится, т.к. менеджеры ограничены одним уровнем вложенности. Поэтому в настоящий момент придется пользоваться решениями, которые были описаны выше.
карма: 26
0
Ответов: 655
Рейтинг: 18
#11: 2017-01-10 00:15:39 ЛС | профиль | цитата
Перечитал еще раз подобные темы, данную тему...посмотрел на схему внимательно и переделал...компоненты с вкладки Type очень помогли.
Тему можно закрывать.
карма: 0

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