![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CASE
Infinityx93 © (2007-05-28 13:35:00)можно ли сделать case динамичным?
есть н элементов и надо н решений. обьяснил как смог(
Kolan (2007-05-29 14:40:00) [1]> Sergey Masloff (28.05.07 22:39)
Благодарю надо обязательно прочесть
Игорь Шевченко (2007-05-29 14:06:00) [2]Sergey Masloff
Это судьба всех серебряных пуль. Увы :)
SpellCaster (2007-05-29 13:05:00) [3]> процедуры одни просто на итемах одна переменная меняется,
> Combobox1.ItemIndex.
Тогда что мешает просто передавать этот индекс в процедуру?
Двмижо (2007-05-28 22:46:00) [4]
> можно ли сделать case динамичным?
Нет, но можно сделать динамическим for.
Sergey Masloff (2007-05-28 22:39:00) [5]к 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.
мой примечаний ;-) Это происходит сплошь и рядом. Паттерны вещь такая - на слуху и на данный момент преподносится как одна из серебряных пуль. Поэтому начинает применятиься с чрезмерной горячностью.
Sergey Masloff (2007-05-28 22:34:00) [6]Kolan © (28.05.07 14:28) [13]
> Это самый правильный(имхо) путь.
Почитай книжку антипаттерны ;-)
Kolan (2007-05-28 22:32:00) [7]> [19] oxffff © (28.05.07 15:13)
Имхо «Это не наш метод» ©
oxffff (2007-05-28 16:00:00) [8]
> b:integer;
b:word
oxffff (2007-05-28 15:13:00) [9]
> 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;
Kolan (2007-05-28 15:05:00) [10]> Из пушки по воробьям ?)
Думаю нет. Раз он собрался копипастить, то, имхо, многое можно будет поместить в Custom предка.
Автор конкретней задачуопеши
Kolan (2007-05-28 15:04:00) [11]>
> А динамические методы?
В смысле «Не хочешь же ты сказать, что и функции надо динамически на рантайме сочинять?»?
Это незнаю как :), только интерпритатор писать
Сергей М. (2007-05-28 14:32:00) [12]
> сделать иерархию классав
> самый правильный(имхо) путь
Из пушки по воробьям ?)
oxffff (2007-05-28 14:31:00) [13]
> Kolan © (28.05.07 14:28) [13]
> > не понял что такое паттен
>
> Описочка вышла, паттерн, конечно.
> Общий смысл — сделать иерархию классав во главе с обним
> предком(интерфейсом). Конкретное поведение поместить в подклассы.
> И подменять конкретный экземпляр.
> Case тогда вообще не нужен…
>
> PS
> Это самый правильный(имхо) путь.
А динамические методы?
Infinityx93 (2007-05-28 14:30:00) [14]
> А какая разница чем делать выбор (if или case) если его
> надо сделать принципиально ?
мне все равно чем делать выбор просто кейс взял потому что условий больше 2х, да и реакцию комбобокса мне так сказали сделать (
>
> Вероятно у него combo на 256 items и есть 256 разных процедур.
>
> Это по нашему:)
процедуры одни просто на итемах одна переменная меняется, Combobox1.ItemIndex.
и я поэтому подумал почему бы не уменьшить размер не нужного кода
> Что значит "делаются" ?
>
делаются значит вычисляются машинкой
Kolan (2007-05-28 14:28:00) [15]> не понял что такое паттен
Описочка вышла, патте рн, конечно.
Общий смысл сделать иерархию классав во главе с обним предком(интерфейсом). Конкретное поведение поместить в подклассы. И подменять конкретный экземпляр.
Caseтогда вообще не нужен
PS
Это самый правильный(имхо) путь.
Сергей М. (2007-05-28 14:20:00) [16]
> Jeer © (28.05.07 14:16) [10]
Тут ведь засада в другом)
Ну пусть он сделает вместо 256-ти всего одну процедуру и передаст в нее параметром ItemIndex.
Следующим вопросом будет вопрос про тот же самый case и "256элементов копи пастить", но уже в теле той самой единственной процедуры
Сергей М. (2007-05-28 14:17:00) [17]
> при нажатии на определенный итем делаются процедурки
Что значит "делаются" ?
"lелаются процедурки" - понятие, относящееся только к design- и compile-time.
А "нажатие на определенный итем" - это run-time.
Разницу осюсяешь ?
Jeer (2007-05-28 14:16:00) [18]
> Reindeer Moss Eater © (28.05.07 14:12) [8]
Вероятно у него combo на 256 items и есть 256 разных процедур.
Это по нашему:)
Jeer (2007-05-28 14:14:00) [19]
> Infinityx93 © (28.05.07 14:03) [7]
А какая разница чем делать выбор (if или case) если его надо сделать принципиально ?
Reindeer Moss Eater (2007-05-28 14:12:00) [20]Убрать кейс вообще. Передавать в одну процедуру индекс выбранного элемента.
Не хочешь же ты сказать, что и функции надо динамически на рантайме сочинять?