Вверх ↑
Этот топик читают: Гость
Ответов: 1942
Рейтинг: 627
#1: 2014-06-10 00:00:06 ЛС | профиль | цитата
А что если добавить в CounterEx возможность счета не с переходом как сейчас, а туда-суда-обратно.
К примеру имеем Min = 0, Max = 5, Step = 1
Счетчик выдаст: 0,1,2,3,4,5,0,1,2,3,4,5,0,...
А иногда нужно: 0,1,2,3,4,5,4,3,2,1,0,1,2,...
Добавил свойство: @Reverse=Изменять направление счета при достижении крайнего значения|14|0|False,True
И событие: *onReverse=Событие происходит всякий раз после изменения направления, перед событием onNext|2|
Совместимость не пострадает
Скачать архив с примером: counterex_2014_06_09.zip

И вопрос по коду элемента. Зачем эти строки?
#pas
type
Increment = procedure of object;
Decrement = procedure of object;
ThroughMax = procedure of object; // Вот это
ThroughMin = procedure of object; // И вот это

Или вот элемент из этой темы добавить: Pendulum маятник
карма: 9

3
файлы: 1counterex_2014_06_09.zip [3.3KB] [249]
Голосовали:MAV, foksov, Konst
vip
#1.1контекстная реклама от партнеров
Ответов: 1303
Рейтинг: 405
#2: 2014-06-10 00:29:36 ЛС | профиль | цитата
sla8a, мне частенько необходим переход через ноль. В реальной схеме данная возможность позволит избавиться от одного элемента в схеме для случая abs(min=max), если min<>max то компонентов понадобиться поболее. Так чт думаю стоит включить в пакет.
карма: 3

0
Ответов: 1376
Рейтинг: 197
#3: 2014-06-10 07:00:40 ЛС | профиль | цитата
sla8a писал(а):
А что если добавить в CounterEx ...
очень даже нужно!
sla8a писал(а):
туда-суда-обратно
будем Вам и нам приятно
карма: 1

0
Ответов: 4347
Рейтинг: 678
#4: 2014-06-10 11:21:32 ЛС | профиль | цитата
sla8a писал(а):
Зачем эти строки?
Да, вроде, все четыре не нужны.
карма: 25

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#5: 2014-06-10 12:42:51 ЛС | профиль | цитата
Netspirit писал(а):
Да, вроде, все четыре не нужны

Первые два нужны, а вот последние два на что-то резервировали, вот только не помню уже на что
карма: 20

0
Ответов: 4347
Рейтинг: 678
#6: 2014-06-10 12:55:37 ЛС | профиль | цитата
Да не нужны они.
карма: 25

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#7: 2014-06-10 12:58:55 ЛС | профиль | цитата
Netspirit писал(а):
Да не нужны они

Действительно, что-то стормозил я. Можно выкинуть все
карма: 20

0
Ответов: 1942
Рейтинг: 627
#8: 2014-06-10 13:41:32 ЛС | профиль | цитата
nesco, Netspirit, а по поводу моей "хотелки" что скажете?
карма: 9

0
Ответов: 4347
Рейтинг: 678
#9: 2014-06-10 13:46:30 ЛС | профиль | цитата
Я что-то не припомню, чтобы мне это требовалось, но если есть пример практического применения, то почему б и нет.
карма: 25

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#10: 2014-06-10 16:16:50 ЛС | профиль | цитата
sla8a писал(а):
а по поводу моей "хотелки" что скажете?

Да я не против, только у меня небольшая напряженка, а дома комп пока не работает нормально. Тч пока добавить не могу на SVN
карма: 20

0
Ответов: 824
Рейтинг: 137
#11: 2014-06-10 18:07:18 ЛС | профиль | цитата
sla8a, по моему мнению, "хотелка" очень даже нужная. Свойство Reverse - обозвать AutoReverse.
Иногда нужно что-то просто посчитать не зная максимально/минимально возможной величины и не писать в Мin/Max "+/- сто тысяч миллионов" - а просто считать без Reverse и "ResetMinMax".....
карма: 1

0
Ответов: 16884
Рейтинг: 1237
#12: 2014-06-10 20:17:36 ЛС | профиль | цитата
sashaoli писал(а):
Иногда нужно что-то просто посчитать не зная максимально/минимально возможной величины


Add(Math,10237375,798,336)
{
Op2=1
ResultType=0
link(Op1,10237375:Result,[(804,324)(792,324)(792,380)(804,380)])
}
хоть до MaxInt
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 824
Рейтинг: 137
#13: 2014-06-10 20:32:23 ЛС | профиль | цитата
Tad, а кто мне говорил что
Компоненты Math..... жрут память только так.


карма: 1

0
Ответов: 1942
Рейтинг: 627
#14: 2014-06-10 21:39:00 ЛС | профиль | цитата
Или вот элемент из этой темы добавить: Pendulum маятник
карма: 9

0
Ответов: 16884
Рейтинг: 1237
#15: 2014-06-10 21:46:30 ЛС | профиль | цитата
Да. Компонент Math сожрет на ~4кб больше, чем Counter.
Что есть, то есть.
A простейшая IC будет экономней всех:

Add(InlineCode,11355100,189,112)
{
WorkPoints=#7:doClear|6:doNext|
EventPoints=#3:Res|
Code=#15:unit HiAsmUnit;|6:// Tad|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: fRes:integer;|9: public|17: Res:THI_Event;|49: Procedure doNext(var _Data:TData; Index:Word);|50: Procedure doClear(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|30:Procedure THiAsmClass.doClear;|19:begin fres:=0; end;|29:Procedure THiAsmClass.doNext;|5:begin|11: inc(fres);|23: _hi_onEvent(Res,fRes);|4:end;|4:end.|
}


карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)