Вверх ↑
Этот топик читают: Гость
Ответов: 1305
Рейтинг: 29
#31: 2007-04-01 07:32:39 ЛС | профиль | цитата
Dilma писал(а):
шутники Он же практически в точности повторяет компонент IndexToChannel

Да нет, скорее это расширенный Hub, по крайней мере Ex вариант. Мне так кажется
карма: 0

0
Ответов: 9906
Рейтинг: 351
#32: 2007-04-01 09:26:26 ЛС | профиль | цитата
v258 писал(а):
Да нет, скорее это расширенный Hub, по крайней мере Ex вариант. Мне так кажется

Не согласен.
Может кто-то приведет схему, в которой использование сего Commutator-а дает великие преимущества, по сравнении с IndexToChannel

А то, мне лично, такая на ум чего-то не приходит - вот вам и ответ на вопрос "ай почему..." в данном конкретном случае.
карма: 9

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#33: 2007-04-01 11:02:27 ЛС | профиль | цитата
Вот пример, дающий преимщество независимого управления потоком. code_1183.txt А если компоненту ChannalToIndex
прикрутить точку
[Methods]
Index=Индекс активированной точки входа|3|int
то это просто шоколад получается. На ChannalToIndex выбираешь канал, а внизу, на Commutator'e
получаешь нужное перенаправление потока. Очень подходит для перенаправления потоков с COM-портов, да и вообще, для направления потока совсем в другие участки схемы. Вот, те самые десятки байт, которые можно сэкономить. Я не нашел адекватной по простоте схемы на других элементах.
карма: 22

0
файлы: 1code_1183.txt [802B] [428]
Ответов: 9906
Рейтинг: 351
#34: 2007-04-01 11:22:05 ЛС | профиль | цитата
nesco писал(а):
Вот пример, дающий преимщество независимого управления потоком


nesco, ты меня что, за идиота держишь code_1184.txt
После такого начинает возникать аллергия даже на рассматривание таких поделушек
карма: 9

0
файлы: 1code_1184.txt [765B] [263]
Разработчик
Ответов: 26072
Рейтинг: 2122
#35: 2007-04-01 13:19:37 ЛС | профиль | цитата
Galkov писал(а):
Вот пример, дающий преимщество независимого управления потоком
И где там написано Commutator -- это просто схема реализованная на этом компоненте (у тебя на стандартном), но это -- схема, именно и предназначенная для независимого управления потоком. Хорошо, ты показал несостоятельность компонента (заметь, я не просил добавить его в дистрибутив), написанного год назад (ну не пришла мне на ум такая реализация, знаний малова-то было, а потом и шло все по накатанной). Теперь, твоими усилиями, мы будем знать, как это можно сделать.
Но вот это, точно не помешает при каналах более двух -- нижняя точка Index в компоненте ChannelToIndex, и ничего менять особо не надо, добавить пару строчек кода
[Methods]
Index=Индекс активированной точки входа|3|int
в ini-файле. И изменить pas вот так
type
  ThiChanelToIndexEx = class(TDebug)
private
dt:TData;
eIndex:word;
public
_prop_Count:integer;
_event_onIndex:THI_Event;

procedure doWork(var _Data:TData; Index:word);
procedure _var_Data(var _Data:TData; Index:word);
procedure _var_Index(var _Data:TData; Index:word);
end;

implementation

procedure ThiChanelToIndexEx.doWork(var _Data:TData; Index:word);
begin
dt:=_Data;
eIndex:=Index;
_hi_OnEvent(_event_onIndex,Index);
end;

procedure ThiChanelToIndexEx._var_Data(var _Data:TData; Index:word);
begin
_Data:=dt;
end;

procedure ThiChanelToIndexEx._var_Index;
begin
_Data := _DoData(eIndex);
end;

end.

[size=-2]------ Добавлено в 13:19
Galkov, не сердись на меня -- бывет тоже глюки ловлю
карма: 22

0
Ответов: 9906
Рейтинг: 351
#36: 2007-04-01 13:20:04 ЛС | профиль | цитата
И чем это отличается от такого:
Add(ChanelToIndex,9953393,126,147)
{
link(onIndex,12043062:doValue,[])
}
Add(Memory,12043062,175,147)
{
}
карма: 9

0
Ответов: 1305
Рейтинг: 29
#37: 2007-04-01 19:15:53 ЛС | профиль | цитата
Galkov писал(а):
v258 писал(а):
Да нет, скорее это расширенный Hub, по крайней мере Ex вариант. Мне так кажется

Не согласен.
Может кто-то приведет схему, в которой использование сего Commutator-а дает великие преимущества, по сравнении с IndexToChannel

Galkov, я, вообще-то про этот компонент говорил, nesco про него же сказал, что не использует его по причинам несовместимости точек Пример использования там есть.

Компонент от nesco, эквивалентен такой схеме
Add(Hub,1854827,175,273)
{
InCount=3
OutCount=1
link(onEvent1,14044251:doEvent,[])
}
Add(IndexToChanel,14044251,224,273)
{
Point(Index)
}
если я, конечно, все правильно понимаю

Второй вариант комутатора (см. ссылку выше) полного эквивалента не имеет (если ошибаюсь, поправьте). Вот несколько вариантов:

Если на точки IndexIn и IndexOut поданы значения -1 (или точки вообще не задействованы), то компонент работает точно так же, как и обычный хаб.
Add(Hub,14930359,273,301)
{
InCount=3
OutCount=3
}
т.е. данные с любой входной точки передаются на все выходные потоки

Если на точку IndexIn подано любое значение, отличное от -1, а на точку IndexOut -1 (или точка не задействована), то компонент работает подобно следующей схеме
Add(Hub,11333882,392,133)
{
OutCount=3
}
Add(If_else,15364446,175,133)
{
Op2=Integer(0)
link(onTrue,14266483:doWork2,[(252,139)])
link(Op1,4553993:Var1,[(181,79)])
}
Add(If_else,12453882,210,196)
{
Op2=Integer(1)
link(onTrue,14266483:doWork3,[(256,202)])
link(Op1,4553993:Var2,[])
}
Add(If_else,9823774,266,259)
{
Op2=Integer(2)
link(onTrue,161968:doWork3,[(312,265)])
link(Op1,4553993:Var3,[(272,79)])
}
Add(GetDataEx,4553993,203,70)
{
link(Data,10606623:Var,[])
}
Add(Memory,15509591,343,84)
{
}
Add(DoData,4068866,343,133)
{
link(onEventData,11333882:doEvent1,[])
link(Data,15509591:Value,[])
}
Add(Hub,2077708,119,126)
{
link(onEvent1,14507748:doWork2,[(167,132)(167,90)])
link(onEvent2,15364446:doCompare,[])
}
Add(Hub,6093506,161,189)
{
link(onEvent1,14507748:doWork3,[(284,195)])
link(onEvent2,12453882:doCompare,[])
}
Add(HubEx,14507748,280,77)
{
link(onEvent,5125153:doWork2,[(322,90)])
}
Add(HubEx,14266483,252,126)
{
link(onEvent,161968:doWork2,[(308,139)])
}
Add(Hub,3188911,210,252)
{
link(onEvent1,5125153:doWork3,[(326,258)])
link(onEvent2,9823774:doCompare,[])
}
Add(HubEx,5125153,322,77)
{
link(onEvent,15509591:doValue,[])
}
Add(HubEx,161968,308,126)
{
link(onEvent,4068866:doData,[])
}
Add(PointHint,10606623,121,21)
{
Info=#32:Индекс активного входного потока|
Width=190
}
т.е. данные только с активной входной точки направляются на все выходные потоки. Другие входные точки блокируются. Причем, как все понимают, количество компонентов if_else будет равняться количеству входных потоков.

Наоборот - на точке IndexIn значение -1 (или точка не задействована), на точке IndexOut - любое другое значение
Add(IndexToChanel,6111334,504,217)
{
Count=3
Point(Index)
link(Index,6307682:Var,[])
}
Add(Hub,4047724,448,217)
{
InCount=3
OutCount=1
link(onEvent1,6111334:doEvent,[])
}
Add(PointHint,6307682,408,133)
{
Info=#33:Индекс активного выходного потока|
Width=204
}
т.е данные со всех входных точек направляются только на активный выходной поток

Если и на точке IndexIn, и на точке IndexOut заданы значения, отличные от -1, то имеем следующее
Add(If_else,15364446,175,133)
{
Op2=Integer(0)
link(onTrue,14266483:doWork2,[(252,139)])
link(Op1,4553993:Var1,[(181,79)])
}
Add(If_else,12453882,210,196)
{
Op2=Integer(1)
link(onTrue,14266483:doWork3,[(256,202)])
link(Op1,4553993:Var2,[])
}
Add(If_else,9823774,266,259)
{
Op2=Integer(2)
link(onTrue,161968:doWork3,[(312,265)])
link(Op1,4553993:Var3,[(272,79)])
}
Add(GetDataEx,4553993,203,70)
{
link(Data,10606623:Var,[])
}
Add(Memory,15509591,357,84)
{
}
Add(DoData,4068866,357,133)
{
link(onEventData,6111334:doEvent,[(450,139)(415,139)])
link(Data,15509591:Value,[])
}
Add(Hub,2077708,119,126)
{
link(onEvent1,14507748:doWork2,[(167,132)(167,90)])
link(onEvent2,15364446:doCompare,[])
}
Add(Hub,6093506,161,189)
{
link(onEvent1,14507748:doWork3,[(284,195)])
link(onEvent2,12453882:doCompare,[])
}
Add(HubEx,14507748,280,77)
{
link(onEvent,5125153:doWork2,[(322,90)])
}
Add(HubEx,14266483,252,126)
{
link(onEvent,161968:doWork2,[(308,139)])
}
Add(Hub,3188911,210,252)
{
link(onEvent1,5125153:doWork3,[(326,258)])
link(onEvent2,9823774:doCompare,[])
}
Add(HubEx,5125153,322,77)
{
link(onEvent,15509591:doValue,[])
}
Add(HubEx,161968,308,126)
{
link(onEvent,4068866:doData,[])
}
Add(PointHint,10606623,121,21)
{
Info=#32:Индекс активного входного потока|
Width=190
}
Add(IndexToChanel,6111334,420,133)
{
Count=3
Point(Index)
link(Index,6307682:Var,[])
}
Add(PointHint,6307682,324,42)
{
Info=#33:Индекс активного выходного потока|
Width=204
}
т.е. данные на активный выходной поток выдаются только с активной входной точки, остальные входные точки блокируются

Кроме того, есть возможность полной блокировки передачи данных через компонент - точка OnOff

Может быть эти возможности действительно никому не нужны, а может кому и понадобятся, по крайней мере, расширение функций стандартного хаба никому бы и не помешало, имхо

Тем более, что верхние точки можно сделать скрытыми, чтобы глаза не мозолили
карма: 0

0
Ответов: 3514
Рейтинг: 184
#38: 2007-04-01 19:17:50 ЛС | профиль | цитата
ЁПРСТ)) КТО НИТЬ МОЖЕТ ОТВЕТИТ НА ВОПРОСИК В НАЧАЛЕ ТОПИКА?)))
карма: 0
0
Разработчик
Ответов: 26072
Рейтинг: 2122
#39: 2007-04-01 19:44:14 ЛС | профиль | цитата
Galkov писал(а):
И чем это отличается

Ничем, но отсутствует внешний линк и один компонент.
А я спрошу -- ЗАЧЕМ плодить элементы, если можно добавить точку? Это что -- принцип такой, если можно сделать из того, что есть, то улучшать ничего не надо. А если компонентов тысячи, то схема по нагромождению и читабельности получается -- чистая ж... И все потому, что кто-то так решил, что лишняя точка компоненту не нужна.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#40: 2007-04-01 19:56:03 ЛС | профиль | цитата
А я спрошу -- ЗАЧЕМ плодить палитру элементов, если можно добавить элемент?

[size=-2]------ Добавлено в 19:56
nesco, ты что, правда считаешь, что мне больше заниматься нечем, как закачивать и тестировать эти "шедевры"

И когда я тебе говорю, что руки не доходят - просто вешаю лапшу на уши
карма: 9

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#41: 2007-04-01 20:18:02 ЛС | профиль | цитата
Galkov писал(а):
И когда я тебе говорю, что руки не доходят - просто вешаю лапшу на уши

У нас что, ты только один этим занимаешься? Тогда я молчу. Но список по добавлению точек в компоненты, все же сделать неполохо (на будущее). ИМХО, конечно.
Galkov писал(а):
А я спрошу -- ЗАЧЕМ плодить палитру элементов, если можно добавить элемент?

А это я не понял к чему. Очень странное, на мой взгляд, выражение.

[size=-2]------ Добавлено в 20:18
Астрамак писал(а):
ЁПРСТ)) КТО НИТЬ МОЖЕТ ОТВЕТИТ НА ВОПРОСИК В НАЧАЛЕ ТОПИКА?)))

По созданию загружаемого массива картинок? И кому, кроме как тебе, он будет нужен?
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#42: 2007-04-01 20:25:21 ЛС | профиль | цитата
nesco писал(а):
Но вот это, точно не помешает при каналах более двух -- нижняя точка Index в компоненте ChannelToIndex, и ничего менять особо не надо, добавить пару строчек кода

в данном конкретном примере больше согласен с Galkov, ым. Кроме того описание к точке:

nesco писал(а):
Index=Индекс активированной точки входа

оно ведь не верное. Компонент не содержит "активированной точки входа". Чтобы почуствовать разницу советую глянуть на GetIndexData. Думаю правильнее было бы назвать эту точку Result с описанием "Содержит результат работы компонента" и такая точка всегда и во всех компонентах предполагает наличие дополнительного кода и затрат памяти. По этой причине такие точки не были в свое время добавлены в строковые компоненты, а так же в некоторые другие, где она явно напрашивается. Поэтому по хорошему стоит сначало решить, хотим ли мы сделать максимально удобные в сборке схемы с совершенно неэффективным кодом, либо хотим не столь удобных схем, но с минимально возможным для концепции данного пакета кодом.
(в который раз замечу, что эти рассуждения для пакета PHP не верны, поскольку там наличие нижних точек не байта лишнего кода не добавляет)

Астрамак писал(а):
ЁПРСТ)) КТО НИТЬ МОЖЕТ ОТВЕТИТ НА ВОПРОСИК В НАЧАЛЕ ТОПИКА?)))

ты на вопрос не ответил в третьем посте.
карма: 26
0
Ответов: 3514
Рейтинг: 184
#43: 2007-04-01 20:28:31 ЛС | профиль | цитата
И кому, кроме как тебе, он будет нужен.


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

[size=-2]------ Добавлено в 20:28
ты на вопрос не ответил в третьем посте.

Ответил, - Да. Но ИЗ ЧЕГО грузить?
карма: 0
0
Ответов: 9906
Рейтинг: 351
#44: 2007-04-01 20:35:45 ЛС | профиль | цитата
Dilma, можно попробовать кучу компонентов сделать наследниками Memory.
C этой же кучей несовместимости из-за имен точек
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#45: 2007-04-01 20:40:03 ЛС | профиль | цитата
Астрамак, ну и как же так получается, что в IntegerArray можно добавить элементы, а в BitmapArray нет? Компонент для этого разве не один и от же используется?
карма: 26
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)