Вверх ↑
Этот топик читают: Гость
Ответов: 8976
Рейтинг: 825
#16: 2010-09-12 17:04:08 ЛС | профиль | цитата
Dilma, иконку ещё надо рисовать - тогда ещё один шаг и компонент готов
iarspider писал(а):
Оформить в виде компонента

[flood]Забыл уже - иконка идёт под номером 6?[/flood]
карма: 19

0
Ответов: 1429
Рейтинг: 50
#17: 2010-09-13 06:17:21 ЛС | профиль | цитата
О! Меня долго не было. Спасибо за Ваши ответы!!
Щас буду разбираться как "пристигнуть иконку", или "написать на элементе"

Создание стандартных элементов мне, пока, не подходит, я сижу на нескольких компах, и периодически переставляю винду. Прийдется в HiAsm постоянно их устанавливать. Переносимость мне нужна более простая.

------------ Дoбавленo в 03.52:
Все получилось, работают и Имена и Иконки (жаль, что иконки не берутся из папки с проектом). Спасибо!

У меня есть еще вариант "быстрого хаба", но он почему-то хоть и генерит все события, но передает данные только на одну из точек.
Add(MainForm,2260457,91,189)
{
Left=20
Top=105
Width=336
Height=253
Color=8421376
Caption=":("
BorderStyle=3
}
Add(Button,11229748,189,189)
{
Left=80
Top=55
Width=65
Height=30
Caption="аЁб?аАб?б?"
Data=String(с переди)
link(onClick,473379:doEvent1,[])
}
Add(TimeCounter,16367636,273,154)
{
link(onStart,7814300:doFor,[(331,160)(331,118)])
link(onStop,7587951:doText,[])
}
Add(For,7814300,357,112)
{
End=2000000
link(onEvent,2069367:doEvent1,[])
link(onStop,16367636:doStop,[(410,125)(410,100)(261,100)(261,167)])
}
Add(TimeCounter,5948833,287,287)
{
link(onStart,381516:doFor,[(345,293)(345,251)])
link(onStop,8951079:doText,[])
}
Add(For,381516,371,245)
{
End=2000000
link(onEvent,3776895:do_in1,[])
link(onStop,5948833:doStop,[(424,258)(424,233)(275,233)(275,300)])
}
Add(Label,7587951,357,161)
{
Left=160
Top=55
}
Add(Label,8951079,371,294)
{
Left=160
Top=75
}
Add(Hub,473379,245,189)
{
link(onEvent1,16367636:doStart,[(266,195)(266,160)])
link(onEvent2,5948833:doStart,[(266,202)(266,293)])
}
Add(InlineCode,3776895,497,245)
{
WorkPoints=#6:do_in1|
EventPoints=#4:out1|4:out2|4:out3|4:out4|
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|18: out1:THI_Event;|18: out2:THI_Event;|18: out3:THI_Event;|18: out4:THI_Event;|48: procedure do_in1(var Data:TData; index:word);|3: |5: end;|0:|14:implementation|0:|0:|0:|0:|29:procedure THiAsmClass.do_in1;|15:var s1:integer;|7:begin |0:|26: _hi_OnEvent(out1, Data);|26: _hi_OnEvent(out2, Data);|26: _hi_OnEvent(out3, Data);|26: _hi_OnEvent(out4, Data);|2: |4:end;|0:|0:|0:|0:|4:end.|
}
Add(Hub,2069367,511,112)
{
OutCount=4
}



Add(MainForm,2953706,168,182)
{
Width=527
Height=275
}
Add(InlineCode,3776895,287,182)
{
WorkPoints=#6:do_in1|
EventPoints=#4:out1|4:out2|4:out3|4:out4|
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|18: out1:THI_Event;|18: out2:THI_Event;|18: out3:THI_Event;|18: out4:THI_Event;|48: procedure do_in1(var Data:TData; index:word);|3: |5: end;|0:|14:implementation|0:|0:|0:|0:|29:procedure THiAsmClass.do_in1;|15:var s1:integer;|7:begin |0:|26: _hi_OnEvent(out1, Data);|26: _hi_OnEvent(out2, Data);|26: _hi_OnEvent(out3, Data);|26: _hi_OnEvent(out4, Data);|2: |4:end;|0:|0:|0:|0:|4:end.|
link(out1,6944392:doText,[(345,188)(345,146)])
link(out2,403253:doText,[])
link(out3,14854456:doText,[(345,202)(345,237)])
link(out4,10569844:doText,[(335,209)(335,286)])
}
Add(Button,9872729,238,182)
{
Left=230
Top=55
Data=Integer(123)
link(onClick,3776895:do_in1,[])
}
Add(Label,6944392,371,140)
{
Left=365
Top=55
}
Add(Label,403253,371,189)
{
Left=365
Top=85
}
Add(Label,14854456,371,231)
{
Left=365
Top=115
}
Add(Label,10569844,371,280)
{
Left=365
Top=145
}






Dilma писал(а):
IC от login, работает быстрее только потому, что убрана верхняя точка Data


Та не, то я, просто, не доделал ее тогда:

Add(MainForm,2260457,91,189)
{
Left=20
Top=105
Width=336
Height=253
Color=8421376
Caption=":("
BorderStyle=3
}
Add(Button,11229748,189,189)
{
Left=80
Top=55
Width=65
Height=30
Caption="аЁб?аАб?б?"
Data=String(с переди)
link(onClick,473379:doEvent1,[])
}
Add(TimeCounter,16367636,273,154)
{
link(onStart,7814300:doFor,[(331,160)(331,118)])
link(onStop,7587951:doText,[])
}
Add(For,7814300,357,112)
{
End=2000000
link(onEvent,12904234:doValue,[])
link(onStop,16367636:doStop,[(410,125)(410,100)(261,100)(261,167)])
}
Add(TimeCounter,5948833,287,287)
{
link(onStart,381516:doFor,[(345,293)(345,251)])
link(onStop,8951079:doText,[])
}
Add(For,381516,371,245)
{
End=2000000
link(onEvent,3613068:in1,[])
link(onStop,5948833:doStop,[(424,258)(424,233)(275,233)(275,300)])
}
Add(Memory,12904234,567,112)
{
Point(Data)
}
Add(Label,7587951,357,161)
{
Left=160
Top=55
}
Add(Label,8951079,371,294)
{
Left=160
Top=75
}
Add(Hub,473379,245,189)
{
link(onEvent1,16367636:doStart,[(266,195)(266,160)])
link(onEvent2,5948833:doStart,[(266,202)(266,293)])
}
Add(InlineCode,3613068,567,245)
{
WorkPoints=#3:in1|
EventPoints=#4:out1|
VarPoints=#4:var1|
DataPoints=#4:dat1|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|12: s1:TData;|9: public|18: out1:THI_Event;|18: dat1:THI_Event;|3: |45: procedure in1(var Data:TData; index:word);|46: procedure var1(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|26:procedure THiAsmClass.in1;|0:|5:begin|9:s1:=Data;|0:|26: _hi_OnEvent(dat1, Data);|28: _hi_OnEvent(out1, Data); |4:end;|0:|27:procedure THiAsmClass.var1;|0:|5:begin|12: Data := s1;|28: _hi_OnEvent(dat1, Data); |4:end;|0:|4:end.|
}
Add(Button,9985643,504,301)
{
Left=80
Top=100
Caption="б?аИб?аЛаО"
link(onClick,9960144:doMessage,[])
}
Add(Message,9960144,567,301)
{
link(Message,3613068:var1,[])
}



На скорость это не влияет. Вот если начать пользоваться верхней точкой, то скорость падает:

Add(MainForm,2260457,77,217)
{
Left=20
Top=105
Width=336
Height=253
Color=8421376
Caption=":("
BorderStyle=3
}
Add(Button,11229748,175,217)
{
Left=80
Top=55
Width=65
Height=30
Caption="аЁб?аАб?б?"
Data=String(с переди)
link(onClick,473379:doEvent1,[])
}
Add(TimeCounter,16367636,259,182)
{
link(onStart,7814300:doFor,[(317,188)(317,146)])
link(onStop,7587951:doText,[])
}
Add(For,7814300,343,140)
{
End=2000000
link(onEvent,12904234:doValue,[])
link(onStop,16367636:doStop,[(396,153)(396,128)(247,128)(247,195)])
}
Add(TimeCounter,5948833,273,315)
{
link(onStart,381516:doFor,[(331,321)(331,279)])
link(onStop,8951079:doText,[])
}
Add(For,381516,357,273)
{
End=2000000
link(onEvent,3613068:in1,[])
link(onStop,5948833:doStop,[(410,286)(410,261)(261,261)(261,328)])
}
Add(Memory,12904234,553,140)
{
Point(Data)
link(Data,3500935:Value,[])
}
Add(Label,7587951,343,189)
{
Left=160
Top=55
}
Add(Label,8951079,357,322)
{
Left=160
Top=75
}
Add(Hub,473379,231,217)
{
link(onEvent1,16367636:doStart,[(252,223)(252,188)])
link(onEvent2,5948833:doStart,[(252,230)(252,321)])
}
Add(InlineCode,3613068,553,273)
{
WorkPoints=#3:in1|
EventPoints=#4:out1|
VarPoints=#4:var1|
DataPoints=#4:dat1|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|12: s1:TData;|9: public|18: out1:THI_Event;|18: dat1:THI_Event;|3: |45: procedure in1(var Data:TData; index:word);|46: procedure var1(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|26:procedure THiAsmClass.in1;|0:|5:begin|9:s1:=Data;|0:|26: _hi_OnEvent(dat1, Data);|28: _hi_OnEvent(out1, Data); |4:end;|0:|27:procedure THiAsmClass.var1;|0:|5:begin|12: Data := s1;|28: _hi_OnEvent(dat1, Data); |4:end;|0:|4:end.|
link(dat1,13016430:Value,[])
}
Add(Button,9985643,490,329)
{
Left=80
Top=100
Caption="б?аИб?аЛаО"
link(onClick,9960144:doMessage,[])
}
Add(Message,9960144,553,329)
{
link(Message,3613068:var1,[])
}
Add(Memory,3500935,553,91)
{
Default=String(веолвенлугнлнвглмболюол)
}
Add(Memory,13016430,553,224)
{
Default=String(веолвенлугнлнвглмболюол)
}



Но, всеравно, в среднем работает быстрее стандартного элемента.

Правда из-за верхней точки, чуть-чуть медленнее работает извлечение из памяти, но мне верхняя, пока, не была нужна ни разу

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#18: 2010-09-13 10:00:11 ЛС | профиль | цитата
login писал(а):
Dilma писал(а)IC от login, работает быстрее только потому, что убрана верхняя точка Data
Та не, то я,
Та да.
Ты вникни о чем Dilma говорил. Ты убрал вызов функции чтения верхней точки
ReadData(_Data,_data_Data);
Вот она то и добавляет время в штатном компоненте.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#19: 2010-09-13 23:53:30 ЛС | профиль | цитата
Tad, Я это хорошо понял, для ускорения я ее и убрал.

login писал(а):
На скорость это не влияет
- вот тут я неверно высказался.
Я хотел сказать, скорость можно сохранить, и при этом добавить верхнюю точку.
------------ Дoбавленo в 23.53:
А чего мой "хаб" теряет значение?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#20: 2010-09-14 00:02:39 ЛС | профиль | цитата
login писал(а):
Я хотел сказать, скорость можно сохранить, и при этом добавить верхнюю точку.
Хотелось бы увидеть. Схему не надо. Только код чтения верхней точки
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#21: 2010-09-14 00:31:58 ЛС | профиль | цитата
В моем элементе вот это:

_hi_OnEvent(dat1, Data);
исправил

Но я не понял суть вопроса, а что она не работает?
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#22: 2010-09-14 01:50:35 ЛС | профиль | цитата
login писал(а):
А чего мой "хаб" теряет значение?

кешировать данные надо

#pas
...
_hi_OnEvent(out1, Data);
...
// а надо
...
dt := Data;
_hi_OnEvent(out1, dt);
...

login писал(а):
Но я не понял суть вопроса, а что она не работает?

работает, но в разрез со всеми канонами hiasm конструирования
карма: 26
0
Ответов: 1429
Рейтинг: 50
#23: 2010-09-14 02:05:53 ЛС | профиль | цитата
Dilma, Может это креативный подход?
Дык, а что этими элементами нельзя пользоваться?
Вот я уже пишу программу, вместе с еще одним, ,быстрым, элементом DoData:

code_20583.txt

Тут я, опять, ничего не кеширую.
карма: 0

0
файлы: 1code_20583.txt [1.7KB] [105]
Ответов: 1376
Рейтинг: 198
#24: 2010-09-14 02:13:58 ЛС | профиль | цитата
login писал(а):
Вот я уже пишу программу, вместе с еще одним, быстрым, элементом DoData:

А в чём выгода этого "быстрого" DoData?
карма: 1

0
Ответов: 1429
Рейтинг: 50
#25: 2010-09-14 02:19:21 ЛС | профиль | цитата
Кешировать в роутере - это медленнее
У меня скорость событий в потоке - "раз в пол миллисекунды". Когда роутер удлинняю то схема замедляется существенно, событие попадает на цикл for и количество точек, умножает события "лавинообразно". А без for довольно шустро. Ну ладно, раз так, то буду кешировать в переменную
------------ Дoбавленo в 02.19:
foksov писал(а):
А в чём выгода этого "быстрого" DoData?

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

Пример "транзистора из макса" (есть еще такой обратный):
Add(MainForm,2260457,140,238)
{
Left=20
Top=105
Width=336
Height=253
Color=8421376
Caption=":("
BorderStyle=3
}
Add(Button,11229748,238,238)
{
Left=80
Top=55
Width=65
Height=30
Caption="аЁб?аАб?б?"
Data=String(с переди)
link(onClick,473379:doEvent1,[])
}
Add(TimeCounter,16367636,322,203)
{
link(onStart,7814300:doFor,[(380,209)(380,167)])
link(onStop,7587951:doText,[])
}
Add(For,7814300,406,161)
{
End=2000000
link(onEvent,12904234:doValue,[])
link(onStop,16367636:doStop,[(459,174)(459,149)(310,149)(310,216)])
}
Add(TimeCounter,5948833,336,336)
{
link(onStart,381516:doFor,[(394,342)(394,300)])
link(onStop,8951079:doText,[])
}
Add(For,381516,420,294)
{
End=2000000
link(onEvent,1669216:in1,[])
link(onStop,5948833:doStop,[(473,307)(473,282)(324,282)(324,349)])
}
Add(Label,7587951,406,210)
{
Left=160
Top=55
}
Add(Label,8951079,420,343)
{
Left=160
Top=75
}
Add(Hub,473379,294,238)
{
link(onEvent1,16367636:doStart,[(315,244)(315,209)])
link(onEvent2,5948833:doStart,[(315,251)(315,342)])
}
Add(Memory,12904234,616,161)
{
Default=String(веолвеглвнлн)
Point(Data)
}
Add(InlineCode,1669216,616,294)
{
@Hint=#19:Switcher (из макса)|
WorkPoints=#3:in1|9:doSelect1|9:doSelect2|
EventPoints=#4:out1|4:out2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|13: i:integer;|9: public|29: out1:THI_Event; //выход 1|29: out2:THI_Event; //выход 2|3: |55: procedure in1(var Data:TData; index:word); // Вход 1|3: |64: procedure doSelect1(var DataS1:TData; index:word); // select1|64: procedure doSelect2(var DataS2:TData; index:word); // select2|3: |5: end;|0:|14:implementation|0:|36:procedure THiAsmClass.in1; // Вход 1|4: |5:begin|21: if i = 0 then|31: _hi_OnEvent(out1, Data)|8: else|32: _hi_OnEvent(out2, Data);|4:end;|4: |51: procedure THiAsmClass.doSelect1; // select1|30: begin i := 0; end;|12: |51: procedure THiAsmClass.doSelect2; // select2|30: begin i := 1; end;|0:|4:end.|
}


карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#26: 2010-09-14 02:39:08 ЛС | профиль | цитата
login писал(а):
Может это креативный подход?

если "креативным" называется подход, при котором нарушаются базовые правила взаимодействия элементов, то как минимум следует доказать его преимущество. Иначе тут уместен эпитет несколько иного характера.

login писал(а):
Написал несколько важных(для меня), быстрых элементов, и оказалось, что они работают в 4 раза быстрее Memory и DoData с которыми взаимодействуют

а связки из простых элементов FTCG работают в среднем в 10 раз быстрее, чем аналоги стандартного пакета - еще немного и вы сами придете к ответу на вопрос о том, почему низкоуровневые задачи нужно решать только в коде, а не пытаться методами кастрации ускорить схему для одного конкретного случая
карма: 26
0
Ответов: 1376
Рейтинг: 198
#27: 2010-09-14 02:43:18 ЛС | профиль | цитата
Удалено...
карма: 1

0
Ответов: 1429
Рейтинг: 50
#28: 2010-09-14 03:06:56 ЛС | профиль | цитата
Dilma писал(а):
эпитет несколько иного характера

Да я профан в delphi

Dilma, Схема будет огромной, по функциональности размером с фотошоп.
Попытки писать подобное в коде, привели к полной потере контроля и понимания что происходит в проэкте. Мой мозг этого не тянет.
А в HiAsme - легко
Нельзя же написать все в одном мультике FTCG, их будет много, и понадобится условное взаимодействие между ними, и с интерфейсом, и еще, бог зна с чем.
Для этого есть несколько связующих элементов которые я и переделал.

Dilma, Вы и правы и нет, код это странный, промежуточный, продукт компьютерной индустрии программирования, для работы с кодом нет аппаратной поддерждки в мозгу у человека. А для работы со схемами - есть. Любой психолог это подтвердит. Они бы еще заставили людей в нулях и еденицах кодить.
(такая точка зрения)


------------ Дoбавленo в 03.06:
Хотя, возможно, я туповат не только в Delphi а и в жизни. И не всем так трудно с кодом.
Может при родах глюк
карма: 0

0
Ответов: 1376
Рейтинг: 198
#29: 2010-09-14 03:21:26 ЛС | профиль | цитата
login, если пишешь "под себя", то ладно, можешь всяко извращаться, но в случае с "Конструктором", то надо быть всем угодным, пользователям и KOL, блин!
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#30: 2010-09-14 11:43:43 ЛС | профиль | цитата
login, вы меня не слушаете. Или слушаете, но понимаете совершенно не так. Речь в сообщении выше шла о том, что большие алгоритмы с использованием исключительно элементов вкладок Инструменты и Логика (иногда еще и Строки) проще и нагляднее смотрятся в коде, а не все приложение вообще

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

я не сравнивал эффективность разработки приложения в коде и в схеме - эту тему уже 100 раз обсуждали. Я лишь указал узкие места стандартного пакета и пути их наиболее рационального исправления.

login писал(а):
И не всем так трудно с кодом.

login, ни один нормальный программист "не мыслит в коде", т.к. не является привязанным к конкретной его реализации (т.е. к конкретному языку). И если у человека это не получается, то проблема в данном случае не с кодом, а с невозможностью думать логически и последовательно. Это как решение задач по математике и геометрии в старших классах - кому-то дается легко, а кому-то нет. Вот у последних и не сложится с программированием в последствии. А HiAsm (и среды ему подобные) построены так, что задачу в них можно решать даже не думая, методом тыка. А не потому, что
login писал(а):
А для работы со схемами - есть. Любой психолог это подтвердит

карма: 26
2
Голосовали:Tad, login
30
Сообщение
...
Прикрепленные файлы
(файлы не залиты)