Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизCASE Найти похожие ветки
← →
Infinityx93 © (2007-05-28 13:35) [0]можно ли сделать case динамичным?
есть н элементов и надо н решений. обьяснил как смог(
← →
Сергей М. © (2007-05-28 13:40) [1]
> можно ли сделать case динамичным?
Нельзя.
Сам подумай, как ты при этом объяснишь компилятору, каковы должны быть его действия при зарании неизвестном ему условии ?
← →
Kolan © (2007-05-28 13:46) [2]> есть н элементов и надо н решений. обьяснил как смог(
паттен стратегия/состояние
← →
Infinityx93 © (2007-05-28 13:51) [3]
> Сам подумай, как ты при этом объяснишь компилятору, каковы
> должны быть его действия при зарании неизвестном ему условии
> ?
>
не условие известное
вот оно :case Combobox1.ItemIndex of
-1: proc1;
0: proc2;
1: proc2;
← →
Infinityx93 © (2007-05-28 13:52) [4]
> паттен стратегия/состояние
не понял что такое паттен ( и вообще к чему это сообщение?
← →
Сергей М. © (2007-05-28 13:54) [5]
> условие известное
> вот оно
И что, это "условие" означает, что n у тебя всегда будет равно не более чем трем ?
← →
GrayFace © (2007-05-28 14:02) [6]Я обычно делаю так (надо case по строкам):
label AfterCase;
begin
if x = a1 then
begin
...
goto AfterCase;
end;
....
AfterCase:
...
← →
Infinityx93 © (2007-05-28 14:03) [7]т.е. мне придется все 256элементов копи пастить ??? у меня тогда будет оч много строчек. (
может подскажешь как исправить положение. я использую комбобокс и при нажатии на определенный итем делаются процедурки, может можно без кейса???
← →
Reindeer Moss Eater © (2007-05-28 14:12) [8]Убрать кейс вообще. Передавать в одну процедуру индекс выбранного элемента.
Не хочешь же ты сказать, что и функции надо динамически на рантайме сочинять?
← →
Jeer © (2007-05-28 14:14) [9]
> Infinityx93 © (28.05.07 14:03) [7]
А какая разница чем делать выбор (if или case) если его надо сделать принципиально ?
← →
Jeer © (2007-05-28 14:16) [10]
> Reindeer Moss Eater © (28.05.07 14:12) [8]
Вероятно у него combo на 256 items и есть 256 разных процедур.
Это по нашему:)
← →
Сергей М. © (2007-05-28 14:17) [11]
> при нажатии на определенный итем делаются процедурки
Что значит "делаются" ?
"lелаются процедурки" - понятие, относящееся только к design- и compile-time.
А "нажатие на определенный итем" - это run-time.
Разницу осюсяешь ?
← →
Сергей М. © (2007-05-28 14:20) [12]
> Jeer © (28.05.07 14:16) [10]
Тут ведь засада в другом)
Ну пусть он сделает вместо 256-ти всего одну процедуру и передаст в нее параметром ItemIndex.
Следующим вопросом будет вопрос про тот же самый case и "256элементов копи пастить", но уже в теле той самой единственной процедуры
← →
Kolan © (2007-05-28 14:28) [13]> не понял что такое паттен
Описочка вышла, паттерн, конечно.
Общий смысл — сделать иерархию классав во главе с обним предком(интерфейсом). Конкретное поведение поместить в подклассы. И подменять конкретный экземпляр.Case
тогда вообще не нужен…
PS
Это самый правильный(имхо) путь.
← →
Infinityx93 © (2007-05-28 14:30) [14]
> А какая разница чем делать выбор (if или case) если его
> надо сделать принципиально ?
мне все равно чем делать выбор просто кейс взял потому что условий больше 2х, да и реакцию комбобокса мне так сказали сделать (
>
> Вероятно у него combo на 256 items и есть 256 разных процедур.
>
> Это по нашему:)
процедуры одни просто на итемах одна переменная меняется, Combobox1.ItemIndex.
и я поэтому подумал почему бы не уменьшить размер не нужного кода
> Что значит "делаются" ?
>
делаются значит вычисляются машинкой
← →
oxffff © (2007-05-28 14:31) [15]
> Kolan © (28.05.07 14:28) [13]
> > не понял что такое паттен
>
> Описочка вышла, паттерн, конечно.
> Общий смысл — сделать иерархию классав во главе с обним
> предком(интерфейсом). Конкретное поведение поместить в подклассы.
> И подменять конкретный экземпляр.
> Case тогда вообще не нужен…
>
> PS
> Это самый правильный(имхо) путь.
А динамические методы?
← →
Сергей М. © (2007-05-28 14:32) [16]
> сделать иерархию классав
> самый правильный(имхо) путь
Из пушки по воробьям ?)
← →
Kolan © (2007-05-28 15:04) [17]>
> А динамические методы?
В смысле «Не хочешь же ты сказать, что и функции надо динамически на рантайме сочинять?»?
— Это незнаю как :), только интерпритатор писать…
← →
Kolan © (2007-05-28 15:05) [18]> Из пушки по воробьям ?)
Думаю нет. Раз он собрался копипастить, то, имхо, многое можно будет поместить в Custom предка.
Автор — конкретней задачуопеши…
← →
oxffff © (2007-05-28 15:13) [19]
> Kolan © (28.05.07 15:04) [17]
> >
> > А динамические методы?
>
> В смысле «Не хочешь же ты сказать, что и функции надо динамически
> на рантайме сочинять?»?
> — Это незнаю как :), только интерпритатор писать…
TAnotherApproach=class
public
procedure Handler1(var a);message 1;
procedure Handler2(var a);message 2;
procedure Handler3(var a);message 3;
procedure Handler4(var a);message 4;
end;
{ TSuperCase }
procedure TAnotherApproach.Handler1(var a);
begin
showmessage("Handler1");
end;
procedure TAnotherApproach.Handler2(var a);
begin
showmessage("Handler2");
end;
procedure TAnotherApproach.Handler3(var a);
begin
showmessage("Handler3");
end;
procedure TAnotherApproach.Handler4(var a);
begin
showmessage("Handler4");
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var a:TAnotherApproach;
b:integer;
begin
a:=TAnotherApproach.Create;
b:=ComboBox1.ItemIndex+1;
a.Dispatch(b);
a.free;
end;
← →
oxffff © (2007-05-28 16:00) [20]
> b:integer;
b:word
← →
Kolan © (2007-05-28 22:32) [21]> [19] oxffff © (28.05.07 15:13)
Имхо «Это не наш метод» ©
← →
Sergey Masloff (2007-05-28 22:34) [22]Kolan © (28.05.07 14:28) [13]
> Это самый правильный(имхо) путь.
Почитай книжку антипаттерны ;-)
← →
Sergey Masloff (2007-05-28 22:39) [23]к Sergey Masloff (28.05.07 22:34) [22]
ISBN 0−471−19713−0
AntiPatterns. Refactoring Software, Architectures, and Projects in Crisis
William J. Brown и другие
Published by John Wiley & Sons, Inc.
цитата: A design pattern becomes an AntiPattern when it
causes more problems than it solves.
мой примечаний ;-) Это происходит сплошь и рядом. Паттерны вещь такая - на слуху и на данный момент преподносится как одна из серебряных пуль. Поэтому начинает применятиься с чрезмерной горячностью.
← →
Двмижо (2007-05-28 22:46) [24]
> можно ли сделать case динамичным?
Нет, но можно сделать динамическим for.
← →
SpellCaster (2007-05-29 13:05) [25]> процедуры одни просто на итемах одна переменная меняется,
> Combobox1.ItemIndex.
Тогда что мешает просто передавать этот индекс в процедуру?
← →
Игорь Шевченко © (2007-05-29 14:06) [26]Sergey Masloff
Это судьба всех серебряных пуль. Увы :)
← →
Kolan © (2007-05-29 14:40) [27]> Sergey Masloff (28.05.07 22:39)
Благодарю — надо обязательно прочесть…
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.042 c