Вверх ↑
Этот топик читают: Гость
Ответов: 1088
Рейтинг: 111
#46: 2009-01-17 11:56:03 ЛС | профиль | цитата
iarspider писал(а):
не зря там смайлик вставлен

Отмазался называется типа все что до смайла всегда шутка чет я в этом сомневаюсь.
Вообще я не совсем понял, а нафига советники(за исключением Nic'a) и админы участвовали?

В остальном склонен согласться с andrestudio.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8338
Рейтинг: 775
#47: 2009-01-17 12:00:07 ЛС | профиль | цитата
Ой, как жалко, что рано вчера выключился - приболел немного, но всё-таки и моё решение: code_11430.txt 6 шт снято, один добавлен, итого -5; если не считать Мемо, то -4
карма: 14

5
файлы: 1code_11430.txt [1.1KB] [171]
Голосовали:Sniper36, nesco, Dilma, andrestudio, Karl
Ответов: 1088
Рейтинг: 111
#48: 2009-01-17 12:03:36 ЛС | профиль | цитата
Леонид,
Жесть. +1 или +2...
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Гость
Ответов: 17029
Рейтинг: 0
#49: 2009-01-17 12:04:33 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 01:38:38
карма: 0

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#50: 2009-01-17 12:15:35 ЛС | профиль | цитата
iarspider писал(а):
"Читатель", уже два кандидата есть: nesco

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

Вот мой пост от 16 Jan 2009 23:53
nesco писал(а):
Да опоздал я немного, ты вперед постанул


И я не должен следить за постами, вместо решения интересной задачи.

Sniper36 писал(а):
Вообще я не совсем понял, а нафига советники(за исключением Nic'a) и админы участвовали?

Плохо, что не понял. Для меня решением такой задачи была попытка посмотреть -- а не надо ли чего дополнительно прикрутить к компонентам (и cколко бы у вас ушло компонентов не будь этих хитрых точе в StrListe, таких как GetIndex). Да и какое исключение должно быть у Nica, тоже не понятно
------------ Дoбавленo:

Леонид, для чит схемы очень хорошее решение, можно сказать -- лучшее
Однозначно +
карма: 19

0
Ответов: 1088
Рейтинг: 111
#51: 2009-01-17 12:19:45 ЛС | профиль | цитата
nesco писал(а):
а не надо ли чего дополнительно прикрутить к компонентам

Почему бы не прикрутить DataOnFalse к CaseEX точнее DataOnFalse и переключатель что выдавать пользовательские данные или то что пришло на doCase?

nesco писал(а):
Да и какое исключение должно быть у Nica, тоже не понятно

А потому что его схема сериёзно отличается от исходной и не обошлась простым упрощением.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 25460
Рейтинг: 2070
#52: 2009-01-17 12:26:30 ЛС | профиль | цитата
Sniper36 писал(а):
Почему бы не прикрутить DataOnFalse к CaseEX точнее DataOnFalse и переключатель что выдавать пользовательские данные или то что пришло на doCase?


А ты думаешь мне такая мысль не пришла, я уже думал про это

Sniper36 писал(а):
А исключен Nic потому что его схема сериезно отличается от исходной и не обошлась простым упрощением

Так, постановку задачи не читали
Dilma писал(а):
И так постановка задачи: участник форума, который первый предложит аналогичную по функционалу схему

Функционал сильно отличается тем, что полученну. информацию вытащить нельзя, она -- в статусбаре, а не в редакторе
карма: 19

0
Ответов: 3510
Рейтинг: 184
#53: 2009-01-17 12:30:50 ЛС | профиль | цитата
Sniper36, на вот:
hicase.pas:
unit hiCase;
interface

uses Kol,Share,If_arg,Debug;

type
THICase = class(TDebug)
private
FData:TData;
GData:TData;
public
_prop_Value:TData;
_event_onTrue:THI_Event;
_event_onFalse:THI_Event;

property _prop_DataOnTrue:TData write FData;
property _prop_DataOnFalse:TData write GData;
procedure _work_doCase(var _Data:TData; Index:word);
procedure _work_doDataOnTrue(var _Data:TData; Index:word);
procedure _work_doDataOnFalse(var _Data:TData; Index:word);
end;

implementation

procedure THICase._work_doCase;
var dt:TData;
begin
dt := _Data;
if Compare(ReadFromThread(_Data),_prop_Value,0) then
_hi_OnEvent_(_event_onTrue, FData)
else
_hi_OnEvent(_event_onFalse, GData);
end;

procedure THICase._work_doDataOnTrue; begin FData:= _Data; end;
procedure THICase._work_doDataOnFalse; begin GData:= _Data; end;

end.
case.ini:
[About]Version=1.111
Author=HiAsm

[Type]
Class=Element
Info=Организация цепи событий сравнения с выдачей в поток заранее определенных данных
Tab=Tools

[Property]
+Value=Задаёт константу сравнения|3|
@DataOnTrue=Определяет данные для состояния True|3|
@DataOnFalse=Определяет данные для состояния False|3|

[Methods]
doCase=Производит сравнение значения из потока с параметром-константой Value. В случае равенства этих значений вызывается событие onTrue иначе onNextCase с копией входных данных. onNextCase - обычно связывается со следующим каскадом Case|1|
onTrue=Событие происходит всякий раз при равенстве значения из потока значению параметра Value и выдает в поток данные из ячейки DataOnTrue|2|
onFalse=Событие происходит всякий раз при НЕ равенстве значения из потока значению параметра Value и выдает в поток данные из ячейки DataOnFalse|2|

Пример:
Add(Case,3700304,322,105){
Value=Integer(1)
DataOnTrue=String(равно)
DataOnFalse=String(не равно)
link(onTrue,3623112:doWork2,[])
link(onFalse,3623112:doWork3,[(368,118)])
}
Add(Button,4454438,161,105)
{
Left=210
Top=105
Data=Integer(1)
Point(doCaption)
link(onClick,12402843:doRandom,[])
}
Add(Memo,4190696,392,105)
{
Left=300
Top=105
}
Add(HubEx,3623112,364,98)
{
link(onEvent,4190696:doAdd,[])
}
Add(Random,12402843,210,105)
{
Max=1
link(onRandom,4276988:doEvent1,[])
}
Add(Hub,4276988,273,105)
{
link(onEvent1,3700304:doCase,[])
link(onEvent2,4454438:doCaption,[(300,118)(300,98)(149,98)(149,111)])
}

Советую ставить, как отдельный элемент..

/обновлено, маленькие правки/
карма: 0
0
Разработчик
Ответов: 25460
Рейтинг: 2070
#54: 2009-01-17 12:34:25 ЛС | профиль | цитата
Астрамак, у тебя на выход всегда что-то будет поступать, акромя входных данных, которые должны пройти на выход, если нет соответствия
карма: 19

0
Ответов: 4396
Рейтинг: 475
#55: 2009-01-17 12:37:43 ЛС | профиль | цитата
Не зря Галков говорил, схема должна помогать думать а не иначе.
Я против точки DataOnFalse в Case, или тогда уж сам компонент должен название сменить.
карма: 4

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#56: 2009-01-17 12:38:37 ЛС | профиль | цитата
Тогда уж лучше так


procedure THICase._work_doCase;
var dt:TData;
begin
dt := _Data;
if Compare(ReadFromThread(_Data),_prop_Value,0) then
_hi_OnEvent_(_event_onTrue, FData)
else
if _IsNull(GData) then
_hi_OnEvent(_event_onFalse, dt)
else
_hi_OnEvent(_event_onFalse, GData);
end;
карма: 19

0
Ответов: 3510
Рейтинг: 184
#57: 2009-01-17 12:38:55 ЛС | профиль | цитата
nesco, NULL
карма: 0
0
Ответов: 4396
Рейтинг: 475
#58: 2009-01-17 12:39:25 ЛС | профиль | цитата
тогда уж логичней к If прикручивать
карма: 4

0
Ответов: 3510
Рейтинг: 184
#59: 2009-01-17 12:42:10 ЛС | профиль | цитата
Тогда уж лучше так

nesco, спорить не могу и не буду (логично ибо), я модернизировал код "гляда вверх", я конечно понимаю как и что куда девается в данном коде, но до твоего уровня мне далековато ))
------------ Дoбавленo:

тогда уж логичней к If прикручивать

не соглашусь..
карма: 0
0
Разработчик
Ответов: 25460
Рейтинг: 2070
#60: 2009-01-17 12:43:38 ЛС | профиль | цитата
Астрамак, да чего там сложного -- если поле DataOnFalse(GData) пустое, то на выход попадут входные данные
карма: 19

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