Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26163
Рейтинг: 2127
#31: 2010-09-22 13:51:28 ЛС | профиль | цитата
login писал(а):
Но щас мы имеем,примерно ,такое скопление элементов, вокруг примитивной задачи:

Это не мы, это ты такое имеешь.
login, перед тем, как заявлять категорически такие вещи, хорошо бы тебе потренироваться в схемопостроении HiAsm-a
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#32: 2010-09-22 13:58:40 ЛС | профиль | цитата
login, дело не в интуиции, понятности или еще чем-то. Вы вводите понятие "оператора" (в вашем примере их к сожалению не три, а пять как минимум), вы вводите понятие "переменная", в итоге само собой появляется понятие "синтаксис", который тоже надо знать и который можно нарушить. Следовательно появляется понятие "синтаксическая ошибка". Т.е. вы привели пример совершенно классического языка программирования. То, что для вас он "интуитивно понятный" еще ни о чем не говорит и к визуальному программированию отношения все же никакого не имеет.
карма: 27
0
Ответов: 1429
Рейтинг: 50
#33: 2010-09-22 14:08:38 ЛС | профиль | цитата
nesco, да, это утрированная, смешная, схема, я ее специально нашел, но она из реальной программы, подобное пишут юзеры пока учатся.
Можно составить оптимальный пример (всеравно будет - каскад ифов), и сравнить его с кодом в одном элементе..
Ладно, пусть все так, ато еще виноватым буду, что предлагаю.
------------ Дoбавленo в 14.08:
Dilma, этот метод решения задачи, каскада условий , юзер захочет получить после 2 месяцев работы в HiAsm.

То-есть он захочет запомнить:
in
out
if - (он это знает поскольку уже ищет етот элемент на палитре)
then
else
Я пришел сюда из среды виз.-прогр.
И я второй раз новичек в подобной среде.

Просто на мой взгляд, если есть элемент IC, то относительно его синтаксиса, можно считать что тут синтаксиса действительно нет.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#34: 2010-09-22 14:10:24 ЛС | профиль | цитата
login писал(а):
Можно составить оптимальный пример (всеравно будет - каскад ифов), и сравнить его с кодом в одном элементе..

для вашей задачи достаточно одного If

login писал(а):
Ладно, пусть все так, ато еще виноватым буду, что предлагаю.

хорошее предложение это то, которое содержит оптимальный пример того, как задача решается сейчас и пример того, как ее можно бы было решить в случае реализации предлагаемого. При этом каждый раз ссылаться на "левых" пользователей, которым это всенепременно будет нужно - не стоит. Докажите сначало, что это упростит работу лично вам.

PS: что касается элементов с псевдоязыком, который был описан выше, то как я уже сказал в рамках стандартного пакета это обсуждать бесполезно. Единственное, что тут можно сделать это создать набор мастеров, которые по этому языку будут формировать готовый IC и вставлять его в схему.
карма: 27
0
Ответов: 1429
Рейтинг: 50
#35: 2010-09-22 14:29:43 ЛС | профиль | цитата
Dilma писал(а):
Единственное, что тут можно сделать это создать набор мастеров, которые по этому языку будут формировать готовый IC и вставлять его в схему.
похоже, что тут это и нужно. Вопрос выше был только в авто-добавлении точек, но наверное внутренний скрипт схем hiAsm сможет IC создавать сразу с нужными точками.

Dilma писал(а):
оптимальный пример

Хорошее предложение может валяться под ногами но люди его не заметят, потому, что ждут "хорошего примера".
Сделаю пример, все-равно я теперь безработный, Midi-входа в HiAsmе нету а Delphi я не знаю

карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#36: 2010-09-22 14:31:27 ЛС | профиль | цитата
Dilma писал(а):
Единственное, что тут можно сделать это создать набор мастеров, которые по этому языку будут формировать готовый IC и вставлять его в схему

Во, а я про что писал, идея очень сильно похожа
nesco писал(а):
что-то типа текстового поля, в котором пишешь текст условия и или математическую формулу, а оно генерирует на его основне IC элемент c нужным количеством точек и готовым кодом на целевом языке

Очень напоминает составление формулы в Excel
карма: 22

0
Ответов: 356
Рейтинг: 31
#37: 2010-09-22 14:38:04 ЛС | профиль | цитата
Dilma писал(а):
создать набор мастеров, которые по этому языку

Тогда про компоненты логики, регекспы и все, связанные с математикой, можно будет забыть
А если язык ещё будет и с возможностью расширения
карма: 0

0
файлы: 1cl.png [39.1KB] [175]
Ответов: 1429
Рейтинг: 50
#38: 2010-09-23 08:34:47 ЛС | профиль | цитата
Да, экселом у меня такие милые девочки умели пользоваться, ну вообще не имеющие отношения к программингу и математике 6)
------------ Дoбавленo в 07.17:
Вот примеры:
Add(MainForm,2953706,21,105)
{
}
Add(If_else,2540444,315,231)
{
Op2=Integer(2)
link(onTrue,13605061:doWork2,[(368,237)(368,244)])
link(onFalse,903573:doData,[(361,244)(361,293)])
}
Add(If_else,13202932,252,217)
{
Op2=Integer(1)
link(onTrue,13605061:doWork1,[(375,223)])
link(onFalse,2540444:doCompare,[(300,230)(300,237)])
}
Add(Button,13846422,189,217)
{
Left=250
Top=165
link(onClick,13202932:doCompare,[])
}
Add(DoData,903573,455,287)
{
}
Add(DoData,14901549,455,238)
{
}
Add(InlineCode,9218489,322,441)
{
WorkPoints=#6:doWork|
EventPoints=#8:onEvent1|8:onEvent2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|24: onEvent1:THI_Event;|24: onEvent2:THI_Event;|5: |50: procedure doWork(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|0:|0:|29:procedure THiAsmClass.doWork;|5:begin|0:|39:if Data=1 or Data=2 and Data <> 3 then |27:_hi_OnEvent(onEvent1, Data)|4:else|27:_hi_OnEvent(onEvent2, Data)|0:|2: |4:end;|4:end.|
link(onEvent1,15793006:doData,[(380,447)(380,426)])
link(onEvent2,14350949:doData,[(380,454)(380,475)])
}
Add(Button,1944177,259,441)
{
Left=250
Top=165
link(onClick,9218489:doWork,[])
}
Add(DoData,14350949,399,469)
{
}
Add(DoData,15793006,399,420)
{
}
Add(If_else,15924992,399,238)
{
Type=5
Op2=Integer(3)
link(onTrue,14901549:doData,[])
}
Add(HubEx,13605061,371,238)
{
link(onEvent,15924992:doCompare,[])
}
Add(InfoTip,11278987,112,28)
{
Info=#7:Пример:|0:|41:if i=1 or i=2 and i <>3 then o=1 else o=2|
Width=484
Height=598
}
Add(InfoTip,3514511,154,119)
{
Info=#75:Вот только этой схемы мало, и прийдется написать обработчик ситуации, когда|93:и первый и второй опреанд - равны, что приведет к возникновению двух потоков друг за другом.|105:Обработчик отсеивающий лишнее событие понадобится из нескольких элементов, и надо думать как его сделать.|
HAlign=0
Width=386
Height=234
}
Add(InfoTip,6454423,112,651)
{
Info=#45:Примеры условных каскадов из Вашей "Нетрумы":|
Width=484
Height=598
}
Add(Case,5117538,196,735)
{
Value=String(console)
link(onNextCase,11573344:doCase,[])
link(onTrue,9234265:doWork1,[])
}
Add(ChildForm,9234265,245,742)
{
@Hint=#14:Console window|
AddHint(-33,-36,92,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,11836598,21,21)
{
WorkCount=2
link(doWork1,8795665:doVisible,[(112,27)(112,132)])
link(doWork2,15453568:doAdd,[])
}
Add(MainForm,8795665,140,98)
{
Left=35
Top=105
Visible=1
Caption="Net console"
Point(doVisible)
}
Add(Memo,15453568,140,28)
{
Top=154
Width=314
Height=55
Align=5
Color=0
Font=[MS Sans Serif,8,0,16777215,1]
ScrollBars=3
ReadOnly=0
}
END_SDK
Add(Case,11573344,294,735)
{
Value=String(add)
link(onNextCase,6451159:doCase,[])
link(onTrue,956894:doWork1,[])
}
Add(ChildForm,956894,343,742)
{
@Hint=#8:Add user|
FirstUsage=0
AddHint(-19,-35,57,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,4022994,21,21)
{
EventCount=1
WorkCount=1
Width=398
Height=235
link(doWork1,6336305:doVisible,[(59,27)(59,167)])
}
Add(MainForm,6336305,98,133)
{
Left=35
Top=105
Width=354
Height=270
Visible=1
Caption="Add user"
Point(doVisible)
}
Add(Edit,16219053,245,63)
{
Left=50
Top=20
Width=235
Text="forum-bot"
}
Add(StreamPack,679079,238,168)
{
DataCount=#2:id|4:name|4:type|6:parent|
link(onPack,4022994:onEvent1,[(344,174)(344,27)])
link(id,879432:Value,[])
link(name,16219053:Text,[])
link(type,6861427:Var1,[(258,152)])
link(parent,6861427:Var2,[])
}
Add(Button,6271772,189,168)
{
Left=240
Top=190
Caption="ok"
link(onClick,679079:doPack,[])
}
Add(Memory,879432,238,105)
{
Default=Integer(101)
}
Add(Memory,11713433,280,105)
{
Default=Integer(0)
}
Add(GetDataEx,6861427,259,147)
{
Angle=1
link(Data,11713433:Value,[(286,152)])
}
END_SDK
Add(Case,6451159,392,735)
{
Value=String(addgrp)
link(onTrue,12678737:doWork1,[])
}
Add(ChildForm,12678737,441,742)
{
@Hint=#9:Add group|
FirstUsage=0
AddHint(-24,-34,64,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,4022994,21,21)
{
EventCount=1
WorkCount=1
Width=363
Height=235
link(doWork1,6336305:doVisible,[(59,27)(59,244)])
}
Add(MainForm,6336305,238,210)
{
Left=35
Top=105
Width=306
Height=99
Visible=1
Caption="Add group"
BorderStyle=3
Point(doVisible)
}
Add(Edit,16219053,245,63)
{
Left=45
Top=10
Width=235
Text=""
}
Add(StreamPack,679079,238,168)
{
DataCount=#2:id|4:name|4:type|6:parent|
link(onPack,4022994:onEvent1,[(344,174)(344,27)])
link(id,879432:Value,[])
link(name,16219053:Text,[])
link(type,11713433:Value,[(258,152)(286,152)])
link(parent,12014451:Value,[(265,152)(335,152)])
}
Add(Button,6271772,154,168)
{
Left=225
Top=40
Caption="ok"
link(onClick,15341418:doEvent1,[])
}
Add(Memory,879432,238,105)
{
Default=Integer(101)
}
Add(Memory,11713433,280,105)
{
Default=Integer(1)
}
Add(Label,609286,119,77)
{
Left=5
Top=15
Width=32
Height=17
Caption="Name"
}
Add(Memory,12014451,329,105)
{
Default=Integer(0)
}
Add(Hub,15341418,203,168)
{
link(onEvent1,679079:doPack,[])
link(onEvent2,6336305:doClose,[(227,181)(227,237)])
}
END_SDK
Add(StreamUnPack,12626945,182,840)
{
DataCount=#2:id|5:state|
link(onUnPack,1091490:doCompare,[(252,846)(252,916)])
}
Add(If_else,1091490,266,910)
{
Op2=Integer(0)
link(onTrue,8486843:doData,[])
link(onFalse,14834718:doCompare,[(310,923)(310,958)])
link(Op1,1258996:Var2,[])
}
Add(ChildFormPoly,120361,378,917)
{
@Hint=#8:Messages|
Childrens=#7:message|
Selected="message"
WorkScheme=1
link(id,12626945:id,[(384,887)(188,887)])
AddHint(47,-30,63,13,@Hint)
}
BEGIN_SDK
Add(EditPolyMulti,16543750,21,21)
{
WorkCount=#5:##add|9:doMessage|10:doQuitUser|10:doUserJoin|10:doUserList|9:doVisible|
EventCount=#6:onPack|
DataCount=#2:id|4:Name|
Point(##add)
}
Add(MainForm,16603502,35,105)
{
Left=35
Top=105
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,4766292,21,21)
{
WorkCount=#5:##add|9:doMessage|10:doQuitUser|10:doUserJoin|10:doUserList|9:doVisible|
EventCount=#6:onPack|
DataCount=#2:id|4:Name|
Width=601
Height=543
Point(##add)
link(##add,5122211:doValue,[(49,27)(49,97)])
link(doMessage,13589987:doEvent1,[(43,34)(43,167)])
link(doQuitUser,11319014:doCompare,[(37,41)(37,335)])
link(doUserJoin,4598355:doCompare,[(31,48)(31,405)])
link(doUserList,8710547:doCompare,[(28,55)(28,482)])
link(doVisible,15770901:doCompare,[(63,62)(63,279)])
}
Add(MainForm,6400130,196,245)
{
Left=35
Top=105
Width=541
Height=267
Caption="Room"
SavePosName="net-roomsmessage"
Point(doVisible)
Point(doPlaceInTaskBar)
link(onCreate,10803518:doEvent1,[])
}
Add(ChildPanelEx,4308289,392,161)
{
link(onClick,4425870:doCharset,[(436,167)(436,153)(326,153)(326,258)])
}
BEGIN_SDK
Add(EditMultiEx,4109629,21,21)
{
WorkCount=#5:doAdd|13:doWidthFixBug|
EventCount=#7:onClick|
VarCount=#4:Text|
Width=412
Height=284
link(doAdd,10647244:doAdd,[(39,27)(39,62)])
link(doWidthFixBug,7252576:doWidth,[(29,34)(29,125)])
link(Text,14933181:Var1,[(27,277)])
}
Add(Panel,7252576,70,112)
{
Width=433
Height=242
Align=5
BevelInner=0
Point(doWidth)
}
Add(RichEdit,10647244,70,56)
{
Left=1
Top=1
Width=431
Height=182
Align=5
ScrollBars=2
ReadOnly=0
Point(onURLClick)
link(onURLClick,11148499:doShellExec,[])
}
Add(WinExec,11148499,133,56)
{
}
Add(Memo,12642970,294,196)
{
Left=1
Top=1
Width=374
Height=56
Align=4
ModeSp=3
ScrollBars=3
Point(onKeyDown)
Point(doKeyBack)
link(onKeyDown,7862059:doCheckMask,[])
}
Add(If_else,1289389,154,196)
{
Type=2
Op2=Integer(0)
link(onTrue,4129946:doEvent1,[])
}
Add(Length,10357076,112,196)
{
link(onLength,1289389:doCompare,[])
link(Str,14933181:Var3,[(118,184)(90,184)])
}
Add(KeyMask,7862059,350,203)
{
Ctrl=1
Key=13
link(onTrue,10357076:doLength,[(390,216)(390,268)(101,268)(101,202)])
}
Add(Hub,4129946,203,196)
{
OutCount=3
link(onEvent1,4109629:onClick,[(284,202)(284,27)])
link(onEvent2,12642970:doClear,[])
link(onEvent3,13030514:doData,[(231,216)(231,244)])
}
Add(DoData,13030514,245,238)
{
Data=Integer(0)
link(onEventData,12642970:doKeyBack,[])
}
Add(GetDataEx,14933181,84,272)
{
Angle=1
link(Data,12642970:Text,[(300,277)])
}
END_SDK
Add(Memory,11857955,308,287)
{
Default=Integer(1)
}
Add(Memory,5122211,77,91)
{
Point(Data)
link(onData,11488785:doPack,[])
link(Data,16449049:Var2,[])
}
Add(StreamPack,14112308,378,252)
{
DataCount=#2:id|3:rid|4:text|
link(onPack,2443768:doEvent1,[])
link(id,8808549:Value,[])
link(rid,2328192:Var3,[(391,237)])
}
Add(Memory,8808549,378,196)
{
Default=Integer(5)
}
Add(If_else,4728415,105,161)
{
link(onTrue,9829424:doValue,[])
link(Op1,10155544:Var3,[(111,145)])
}
Add(GetDataEx,10155544,77,140)
{
link(Data,5122211:Value,[])
}
Add(MT_MultiMem,9829424,154,161)
{
From=1
link(onData,178680:doString,[])
}
Add(FormatStr,178680,203,161)
{
Mask="%1: %2"
link(onFString,8595396:doCharset,[])
link(Str1,9829424:Value1,[(209,149)(146,149)(146,205)(160,205)])
link(Str2,9829424:Value2,[(216,149)(242,149)(242,205)(167,205)])
}
Add(If_else,11319014,105,329)
{
link(onTrue,14820209:doGet,[])
link(Op1,3053082:Var3,[(111,313)])
}
Add(FormatStr,16233882,210,329)
{
Mask="Quit %1 (%2)"
link(onFString,11706145:doAdd,[])
}
Add(HubEx,10758257,315,161)
{
link(onEvent,4308289:doAdd,[])
}
Add(GetDataEx,7486987,77,232)
{
link(Data,10155544:Var2,[])
}
Add(If_else,4598355,105,399)
{
link(onTrue,7086258:doValue,[])
link(Op1,14750711:Var3,[(111,373)])
}
Add(MT_MultiMem,7086258,154,399)
{
From=1
Count=1
link(onData,11763026:doString,[])
}
Add(FormatStr,11763026,203,399)
{
DataCount=1
Mask="Join %1"
link(onFString,406989:doAdd,[])
link(Str1,7086258:Value1,[(209,387)(146,387)(146,443)(160,443)])
}
Add(HubEx,8199234,315,329)
{
Angle=3
link(onEvent,10758257:doWork3,[])
}
Add(GetDataEx,3053082,77,308)
{
link(Data,7486987:Var2,[])
}
Add(StreamPack,11488785,147,91)
{
DataCount=#2:id|3:rid|
link(onPack,7158816:doWork2,[])
link(id,14846445:Value,[])
}
Add(Memory,14846445,147,42)
{
Default=Integer(4)
}
Add(HubEx,7158816,447,91)
{
Angle=3
link(onEvent,4766292:onPack,[(451,27)])
}
Add(If_else,8710547,105,476)
{
link(onTrue,1464335:doGet,[])
link(Op1,14750711:Var2,[(111,449)(83,449)])
}
Add(GetDataEx,14750711,77,368)
{
link(Data,3053082:Var2,[])
}
Add(If_else,15770901,105,273)
{
link(onTrue,2752383:doWork2,[])
link(Op1,2328192:Var2,[])
link(Op2,16449049:Var3,[(118,34)])
}
Add(GetDataEx,2328192,105,232)
{
Angle=3
link(Data,7486987:Var3,[])
}
Add(DoData,5868137,154,273)
{
Data=Integer(1)
link(onEventData,6400130:doVisible,[])
}
Add(GetDataEx,16449049,77,29)
{
Angle=3
link(Data,4766292:id,[(27,34)])
}
Add(TreeViewTrain,11907392,399,462)
{
Left=433
Width=100
Height=242
Align=3
Name="users"
ModeSp=3
SizeSp=2
LinesRoot=1
IconsManager="parent.icons"
ParentIDIndex=2
IconIndex=1
}
Add(TVT_AddNode,5301879,203,476)
{
TreeView="users"
}
Add(MT_Get,1464335,154,476)
{
link(onData,5301879:doAddNode,[])
}
Add(MT_Get,14820209,147,329)
{
link(onData,4447440:doEvent1,[])
}
Add(TVT_DeleteNode,16139733,266,336)
{
TreeView="users"
}
Add(Hub,4447440,189,329)
{
link(onEvent1,16233882:doString,[])
link(onEvent2,16139733:doDeleteNode,[])
}
Add(FormatStr,11502863,462,259)
{
Mask="%1: %2"
link(onFString,8614224:doAdd,[])
link(Str1,4766292:Name,[(468,31)(34,31)])
link(Str2,16534729:Var3,[(475,243)])
}
Add(MT_AddData,406989,252,399)
{
Count=3
InputMT=3
link(onAdd,8199234:doWork3,[(319,405)])
link(Data2,1467564:Value,[])
link(Data3,13592105:Value,[(272,394)(307,394)])
}
Add(Memory,1467564,259,357)
{
Default=Integer(65535)
}
Add(Memory,13592105,301,357)
{
Default=Integer(1)
}
Add(MT_AddData,8614224,518,259)
{
Count=3
InputMT=3
link(onAdd,8199234:doWork1,[(562,265)(562,335)])
link(Data2,232340:Value,[])
link(Data3,5999487:Value,[(538,247)(573,247)])
}
Add(Memory,232340,525,203)
{
Default=Integer(10461087)
}
Add(Memory,5999487,567,203)
{
Default=Integer(0)
}
Add(Hub,2443768,420,252)
{
link(onEvent1,7158816:doWork3,[(451,258)])
link(onEvent2,11502863:doString,[])
}
Add(GetDataEx,16534729,392,238)
{
link(Data,4308289:Text,[])
}
Add(MT_AddData,11706145,259,329)
{
Count=3
InputMT=3
link(onAdd,8199234:doWork2,[])
link(Data2,2465841:Value,[])
link(Data3,11857955:Value,[(279,324)(314,324)])
}
Add(Memory,2465841,266,287)
{
Default=Integer(255)
}
Add(Hub,10803518,238,259)
{
link(onEvent1,4308289:doWidthFixBug,[(293,265)(293,174)])
link(onEvent2,6400130:doPlaceInTaskBar,[(260,272)(260,299)(184,299)(184,286)])
}
Add(Charset,8595396,252,161)
{
Type=7
link(onCharset,10758257:doWork2,[])
}
Add(Charset,4425870,336,252)
{
Type=6
link(onCharset,14112308:doPack,[])
link(Text,16534729:Var1,[(342,243)])
}
Add(Hub,13589987,56,161)
{
link(onEvent1,4728415:doCompare,[])
link(onEvent2,2752383:doWork1,[(144,174)])
}
Add(HubEx,2752383,140,273)
{
link(onEvent,5868137:doData,[])
}
END_SDK
Add(DoData,8486843,329,910)
{
Data=String(message)
link(onEventData,120361:##add,[(369,916)(369,923)])
}
Add(If_else,14834718,315,952)
{
Op2=Integer(3)
link(onTrue,120361:doVisible,[])
link(Op1,1258996:Var3,[(321,880)])
}
Add(GetDataEx,1258996,266,875)
{
Angle=3
link(Data,12626945:state,[(195,880)])
}
Add(Case,3326103,133,1057)
{
Value=String(reqauth)
link(onNextCase,5432907:doCase,[])
link(onTrue,1119145:doPack,[(201,1070)(201,1161)])
}
Add(StreamPack,1119145,224,1155)
{
DataCount=#2:id|4:user|4:text|
link(id,10352893:Value,[])
link(user,10482363:Var2,[])
link(text,13346537:Value,[(244,1143)(279,1143)])
}
Add(Memory,10352893,224,1092)
{
Default=Integer(103)
}
Add(Memory,13346537,273,1092)
{
Default=String(please auth me!)
}
Add(Case,5432907,322,1057)
{
Value=String(remove)
link(onNextCase,13274374:doCase,[])
link(onTrue,12241083:doPack,[(366,1070)(366,1161)])
}
Add(StreamPack,12241083,378,1155)
{
DataCount=#2:id|4:user|
link(id,3310211:Value,[])
link(user,5588388:Var2,[])
}
Add(Memory,3310211,378,1092)
{
Default=Integer(102)
}
Add(GetDataEx,10482363,231,1127)
{
}
Add(Case,13274374,448,1057)
{
Value=String(forward)
link(onTrue,168124:doNext,[])
}
Add(GetDataEx,5588388,385,1127)
{
Angle=3
link(Data,10482363:Var3,[])
}
Add(Counter,168124,504,1064)
{
Max=10000
link(onNext,8042932:doAdd,[])
}
Add(MT_Add,8042932,553,1064)
{
Data=String(base)
InputMT=1
}
Add(InfoTip,2737074,154,399)
{
Info=#20:В коде это примитив:|
Width=386
Height=157
}





Заморачиваться с преобразование типов в IC я не стал. Это и так понятно.
------------ Дoбавленo в 08.12:
Посмотрел VisualInline FTCG - сложно, и нет хелпа, и непонятка с точками.
Малейшее усложнение кода, относительно того, что я привел из макса, для конечного пользователя, - непереваримо.
Теги, обязательные параметры, типы(недай бох) это всё лишнее в подобных HiAsm или MAX системах.

Нормально, если похоже на школьный курс математики до 5того класса: x + y = z
(и разделитель - пробел, даже двоеточие в конце строки, будет радражать людей)

------------ Дoбавленo в 08.22:
Assasin, взялся сделать элемент по принципу Мат Прсера. Он, безусловно, молодец! Но, там столько всяких технических "но"..
Подобный элемент должен был выглядеть как некая программа, которая генерит элемент IC, с точками, в виде текста, и вставляет его на лист.
------------ Дoбавленo в 08.34:
Из мировой практики - "резкий скачек сложности".
К примеру, этот термин используют при тестировании компьютерных игр. Если первые 3 уровня юзер ощущал усложнение на на 3% а на 4ртом уровне получил прирост сложности на 30% то на остальные уровни он идти не захочет и будет разочарован. Нужен линейный прирост сложности в среде.

В нашей ситуации, если максимальная сложность работы с кодом это IC, а минимальная это квадратики, то между ними пропасть.
Промежуточным шагом, для юзера, мог бы стать "IC элементогенератор" c кодом, который я привел из макса.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#39: 2010-09-23 14:32:20 ЛС | профиль | цитата
login писал(а):
Промежуточным шагом, для юзера, мог бы стать "IC элементогенератор" c кодом, который я привел из макса

Ну и какой тогда толк будет от визуального конструктора HiAsm? Учить программированию - это конечно хорошо, но когда визуальное построено на мастерах и генераторах, то это уже не конструктор, а генератор программ
login писал(а):
Assasin, взялся сделать элемент по принципу Мат Прсера. Он, безусловно, молодец! Но, там столько всяких технических "но"..

Таких "но" будет достаточно много до тех пор, пока пакет не перейдет полностью (или хотя бы частично) на FTCG, но это тоже достаточно проблематично.
login писал(а):
Подобный элемент должен был выглядеть как некая программа, которая генерит элемент IC, с точками, в виде текста, и вставляет его на лист.

Dilma писал(а):
что касается элементов с псевдоязыком, который был описан выше, то как я уже сказал в рамках стандартного пакета это обсуждать бесполезно.

карма: 10
0
Ответов: 3349
Рейтинг: 233
#40: 2010-09-23 14:34:28 ЛС | профиль | цитата
Assasin писал(а):
на FTCG

тогда будет что то типа пакета WEB
карма: 1

0
Ответов: 356
Рейтинг: 31
#41: 2010-09-23 16:35:25 ЛС | профиль | цитата
это все же шаг в сторону от чистого визуального программирования
какой тогда толк будет от визуального конструктора
При желании, всегда найдётся к чему/кому придраться. Остаётся только удивляться, как lnLineCode не попал под "каток" визуализации , а предлагаемое не сильно от него отличается.

[url=http://itc.ua/node/20466/ писал(а):
ITC.UA[/url]]Теперь можно сказать два слова об ожиданиях. Сегодня уже фактически никто не говорит о VP-системах для «программирования всего». Универсальность и пригодность к решению задач любого масштаба в перечень ожидаемого от визуального программирования не входят. Но облегчить участь будущих вынужденных программировать на уровне пользователя специалистов самых разных профессий хорошо спроектированные системы VP вполне могут. Достаточно при их создании учитывать опыт, полученный в ходе экспериментальных исследований психологии программирования.

карма: 0

1
Голосовали:login
Разработчик
Ответов: 26163
Рейтинг: 2127
#42: 2010-09-23 16:51:30 ЛС | профиль | цитата
Я до сих пор не понял, чего надо-то -- есть IC, этого что мало, или влом изучить базовые основы языка и интерфейса и писать, что душе угодно (насколько я понял, то топикастер уже изучил базовые основы). Ведь то, что предлагается Автором и будет генерировать тот же самый IC
карма: 22

0
Ответов: 1429
Рейтинг: 50
#43: 2010-09-23 20:04:52 ЛС | профиль | цитата
Assasin писал(а):
Учить программированию
- конечно нет.
Я совсем не это имел ввиду.

Не тот масштаб иногда бывает в задачах. Если вы не хотите идти, по улице, большими шагами, то идите маленькими. Но если идти слишком маленькими то это тоже неудобно.
Тоже самое и с if/Case операторами. Если надо сравнивать много условий, строить какой-то фильтр, то ставить отдельные кубики ифов становится сложнее (особенно с возникновением двойных тройных совпадений) чем написать одну строчку кода. С примитивнейшим синтаксисом.

Ситуация с Но.. в HiAsm мне понятна, и можно закончить это обсуждать, мы все друг друга поняли хорошо.
То-есть если бы человек отдал машину в ремонт, а ему говорят: "мы прикрутили вам крыло на шурупы снаружи, потому, что для того, чтобы, приварить его сваркой, надо разбирать машину".
------------ Дoбавленo в 16.57:
nesco писал(а):
топикастер уже изучил базовые основы

Когда я делал пример, я сделал условие в IC, затем я 3 раза переделывал чтобы согласовать все типы данных и кеширования с точек, но всеравно гдето была ошибка и бросил и выложил так, дописав мол "типы недоделаны".
Я то справлюсь с этим, но мне, досихпор, нужна практика. И это не удобно. А я предложил удобное решение, как мне казалось с начала ) Сейчас я понял, что тут много подводных камней.
Я не знал что встроенный скрипт в HiAsm не все умеет. Кстати в максе, на внутреннем языке скрипта я писал программы которые собирали некоторые схемы сами, по требованию юзера, и разбирали. Ограничения я не встречал.
------------ Дoбавленo в 20.04:
Assasin, обьяснил мне, что делвет FTCG с кодом, и я, наконец, понял, что это и есть - то, про что я тут пишу все это время километры текста.
Это та самая "печатная машинка" делфи кода, в некий, невидимый, IC.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#44: 2010-09-24 21:20:35 ЛС | профиль | цитата
Пуф, я аж удивился, что за 3 дня осилил этот компонент! IfParse готов к работе! Причем как под Delphi, так и под FPC (многое позаимствовано из MathParse).
Что есть:
1. Ну зачем он нужен, думаю, объяснять не надо
2. Есть точки onTrue, onFalse для выдачи результата, и точка onError для выдачи ошибки (она только одна - синтаксическая). Нижних точек нет, но приделать будет не трудно
3. Выражения для сравнивания аргументов можно писать следующий образом:

  • Чтобы взять данные с точки, надо просто написать ее имя в выражении (точки верхние у меня именованные): "5 = x1", где x1 - точка.
  • Если точка по данному имени не была найдена, то эта часть выражения преобразуется в real, например: "3.14 < pi", где pi - точка, 3.14 - вн. константа
  • Почему в примере выше я сначала писал число, а потом имя точки? Да потому что алгоритм сравнивания в моем компоненте точно такой же, как и в If_Else, а значит он наследует все проблемы данного компонента (для строк - операции '<', '>' и их производные с '=').
  • Можно использовать операторы 'and', 'or', 'xor', 'not'
  • Возможна группировка подвыражений: "(x1 = 5 and x2 = 10) or x3 = 15" (причем тут можно скобки опустить, они не повлияют на результат)
  • Возможно использование строковых констант за счет добавления оператора "'" (одинарная кавычка), все что лежит между двумя такими будет приниматься за значение (экранирование этого символа с помощью "\'" не сработает, я такого не делал ). Например: "name = 'Assasin'", где name - точка.
В архиве лежат: компонент, иконка, тестовая схемка
[burl=/getfile/20765]Скачать архив[/burl]
P.S: А теперь немного истории создания компонента
Читать

Первым делом я, конечно же, залез в компонент MathParse, так как я до тех пор никак не мог понять, как работают функции levelXX, ничего не понял и решил сам попробовать написать эти функции, без помощи MathParse, вскоре я начал не понимать, что и где должно быть и забил на это бестолковое дело. На следующий день мне повезло куда больше: я залез в MatParse заново и начал упрямо прослеживать в уме исполнение выдуманного выражения... и тут вдруг на пятой пробежке увидел 'while Token = '>' or ...', посмотрел 'GetToken; level(x2);' и сразу же понял! Во мне, естественно, загорелось желание применить это на практике: состряпал GetTok, level0, потом иногда поглядывая в код MathParse начал писать уровни 1, 2, 3 и 4... Ну вот сегодня я все доработал и добавил выдачу ошибок, результат вы сами видите
карма: 10
2
файлы: 1ifparse.rar [3.4KB] [79]
Голосовали:foksov, olDjeka
Ответов: 4641
Рейтинг: 334
#45: 2010-09-24 22:26:56 ЛС | профиль | цитата
Assasin писал(а):
IfParse готов к работе

давай оформляй в раздел Компоненты!
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)