Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26175
Рейтинг: 2128
#46: 2012-09-18 12:20:39 ЛС | профиль | цитата
Netspirit писал(а):
зачем его при каждой итерации проверять?

Вы хотите такую схему, я вам сейчас ее нарисую
Вот только нахрена такой гемор
карма: 22

1
Голосовали:Ivann
Ответов: 4634
Рейтинг: 751
#47: 2012-09-18 12:37:44 ЛС | профиль | цитата
С этим согласен. Единственный возможный вариант - когда накладные расходы на проверку значения (например, запрос в сеть) превышают сложность остального кода. Но опять же, значение получают один раз при старте формы, сохраняют в переменную, а затем уже многократно проверяют значение переменной.
------------ Дoбавленo в 12.37:
nesco писал(а):
С чекбоксом я вижу реализацию вот так

Да, это максимально эффективный алгоритм в HiAsm. Но не решает поставленной задачи - как ты и писал, это возможно на уровне кодов. Возможный костыль - это два Edit'a: в одном onEnter с Beep'ом, в другом - без. А при старте формы делается видимым то один, то другой в зависимости от условия.
карма: 26

0
Разработчик
Ответов: 26175
Рейтинг: 2128
#48: 2012-09-18 12:43:59 ЛС | профиль | цитата
Netspirit писал(а):
Но не решает поставленной задачи - как ты и писал, это возможно на уровне кодов

Не обязательно
nesco писал(а):
Вы хотите такую схему, я вам сейчас ее нарисую

Нарисовал



Add(MainForm,7793634,98,175)
{
link(onCreate,5234883:doWork2,[])
}
Add(ChildPanelPoly,10691305,364,154)
{
Childrens=#4:beep|6:nobeep|
Selected="beep"
}
BEGIN_SDK
Add(EditPolyMulti,10258763,21,21)
{
WorkCount=#5:##add|7:##clear|
Point(##add)
Point(##clear)
}
Add(Panel,1636013,35,105)
{
Width=95
Height=70
BorderWidth=0
BevelInner=0
BevelWidth=0
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,4208174,21,21)
{
WorkCount=#5:##add|7:##clear|
Width=265
Height=221
Point(##add)
Point(##clear)
link(##add,4306077:doWork2,[(45,27)(45,62)])
}
Add(Panel,10726954,56,196)
{
Width=95
Height=70
}
Add(Edit,16420258,56,147)
{
Left=10
Top=30
Text=""
link(onEnter,4058697:doCompare,[])
}
Add(Random,16630336,119,56)
{
link(onRandom,3056266:doText,[])
}
Add(Label,3056266,189,56)
{
Left=65
Top=35
Width=10
Height=17
Caption="0"
}
Add(Beep,16247115,189,112)
{
link(onBeep,14461891:doWork2,[])
}
Add(HubEx,4306077,91,56)
{
link(onEvent,16630336:doRandom,[])
}
Add(If_else,4058697,119,154)
{
link(onTrue,16247115:doBeep,[(180,160)(180,118)])
link(onFalse,14461891:doWork3,[(249,167)])
link(Op1,16630336:Random,[])
}
Add(HubEx,14461891,245,112)
{
Angle=3
link(onEvent,4306077:doWork1,[(249,47)(95,47)])
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,5544854,21,21)
{
WorkCount=#5:##add|7:##clear|
Width=265
Height=221
Point(##add)
Point(##clear)
link(##add,4306077:doWork2,[(57,27)(57,62)])
}
Add(Panel,12532295,56,196)
{
Width=95
Height=70
}
Add(Edit,16420258,56,147)
{
Left=10
Top=30
Text=""
link(onEnter,4058697:doCompare,[])
}
Add(Random,16630336,119,56)
{
link(onRandom,3056266:doText,[])
}
Add(Label,3056266,189,56)
{
Left=65
Top=35
Width=10
Height=17
Caption="0"
}
Add(HubEx,4306077,91,56)
{
link(onEvent,16630336:doRandom,[])
}
Add(If_else,4058697,119,154)
{
link(onTrue,14461891:doWork2,[])
link(onFalse,14461891:doWork3,[(249,167)])
link(Op1,16630336:Random,[])
}
Add(HubEx,14461891,245,154)
{
Angle=3
link(onEvent,4306077:doWork1,[(249,47)(95,47)])
}
END_SDK
Add(StrList,7798254,287,147)
{
Strings=#6:nobeep|4:beep|
Point(onGetString)
Point(doGetString)
link(onGetString,10691305:##add,[])
}
Add(DoData,13483766,217,189)
{
link(onEventData,7798254:doGetString,[])
link(Data,12286048:Checked,[])
}
Add(CheckBox,12286048,217,140)
{
Left=10
Top=75
Width=65
TabOrder=-1
Caption="Bip if true"
}
Add(Button,3832103,98,231)
{
Left=15
Top=105
TabOrder=-1
Caption="ReInit"
link(onClick,15399744:doEvent1,[])
}
Add(HubEx,5234883,182,189)
{
link(onEvent,13483766:doData,[])
}
Add(Hub,15399744,147,231)
{
link(onEvent1,10691305:##clear,[(344,237)(344,167)])
link(onEvent2,5234883:doWork3,[(186,244)])
}


Идея у ТС была правильная, вот только использовать надо было именно полиморфную панель
------------ Дoбавленo в 12.43:
Netspirit писал(а):
Возможный костыль - это два Edit'a: в одном onEnter с Beep'ом, в другом - без. А при старте формы делается видимым то один, то другой в зависимости от условия

Неоправданное использование ресурсов, но направление верное. У ТС идея была более правильная
карма: 22

0
Ответов: 4634
Рейтинг: 751
#49: 2012-09-18 12:44:45 ЛС | профиль | цитата
Да, похоже, это оно. Но, и все пришли к такому выводу, - целесообразность такого решения сомнительна. Наверное, только для теории.
карма: 26

0
Ответов: 1536
Рейтинг: 176
#50: 2012-09-18 14:31:14 ЛС | профиль | цитата
Анекдот:
[flood]
Netspirit писал(а):
Но, и все пришли к такому выводу, - целесообразность такого решения сомнительна. Наверное, только для теории.
- Абрам, что ты думаешь о сексе?
- Ой, Моня, не морочь мне голову! У меня шестеро детей – мне некогда заниматься теорией.
[/flood]
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
Голосовали:Tad
Ответов: 16884
Рейтинг: 1239
#51: 2012-09-18 15:47:53 ЛС | профиль | цитата
Во всяком случае это не "Оптимизация проверки настроек", как было объявлено в названии темы. ИМХО.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26175
Рейтинг: 2128
#52: 2012-09-18 15:52:56 ЛС | профиль | цитата
Tad писал(а):
это не "Оптимизация проверки настроек"

Больше похоже на "Выбор схемы алгоритма при старте"
карма: 22

0
Ответов: 1173
Рейтинг: 49
#53: 2012-09-18 16:31:39 ЛС | профиль | цитата
Tad писал(а):
Во всяком случае это не "Оптимизация проверки настроек"
Я так и не смог придумать адекватное название типа
nesco писал(а):
"Выбор схемы алгоритма при старте"

Ещё раз всем спасибо Как я понял, решение возможно только на основе полиморфных панелей. Чуть позже проведу тестирование, дабы понять, насколько вообще целесообразно использовать данный способ.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#54: 2012-09-18 18:56:59 ЛС | профиль | цитата
Ex_ писал(а):
решение возможно только на основе полиморфных панелей
Не только
Netspirit писал(а):
два Edit'a: в одном onEnter с Beep'ом, в другом - без.

code_29102.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_29102.txt [970B] [113]
Разработчик
Ответов: 26175
Рейтинг: 2128
#55: 2012-09-18 19:24:43 ЛС | профиль | цитата
Tad писал(а):
Не только

Это идея Netspirit-а, но это частный случай. Полиморф же позволяет организовать любой алгоритм по выбору с любой схемой внутри нужного контейнера, те более универсальная
карма: 22

0
Ответов: 1173
Рейтинг: 49
#56: 2012-09-18 20:05:42 ЛС | профиль | цитата
Netspirit писал(а):
два Edit'a: в одном onEnter с Beep'ом, в другом - без.
Edit'а в конечном счёте не будет, он здесь приведён просто как инициатор Проверки.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#57: 2012-09-18 20:11:50 ЛС | профиль | цитата
Ex_ писал(а):
Edit'а в конечном счёте не будет
Понятно.
В конечном счёте ничего не будет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1173
Рейтинг: 49
#58: 2012-09-18 20:19:50 ЛС | профиль | цитата
Tad писал(а):
В конечном счёте ничего не будет
Это почему же вы так думаете?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#59: 2012-09-18 20:37:32 ЛС | профиль | цитата
Потому, что настройки никто не проверяет - настройки считывают готовые. А при первом запуске программы устанавливаются дефолтные. При изменении - проверяется на допустимый диапазон.
P.S.Винда 7 при запуске обращается за настройками к реестру более 10 000 раз .

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