Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

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 тогда вообще не нужен&#133

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]

>
> А динамические методы?

В смысле «Не хочешь же ты сказать, что и функции надо динамически на рантайме сочинять?»?
— Это незнаю как :), только интерпритатор писать&#133


 
Kolan ©   (2007-05-28 15:05) [18]

> Из пушки по воробьям ?)

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

Автор — конкретней задачуопеши&#133


 
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)

Благодарю — надо обязательно прочесть&#133



Страницы: 1 вся ветка

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.031 c
2-1180177564
Настя
2007-05-26 15:06
2007.06.17
Факториалы


6-1161668881
progmax
2006-10-24 09:48
2007.06.17
Альтернатива ReplyStatus в Indy 10


1-1176985318
DestWib
2007-04-19 16:21
2007.06.17
Как удалить файл, напрямую записывая нули на винт


15-1179837326
vitv
2007-05-22 16:35
2007.06.17
Вин+Лин на одном компе.


11-1144397766
sergeev_andrew
2006-04-07 12:16
2007.06.17
Инициализация списков