Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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 тогда вообще не нужен&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.042 c
1-1177061961
Desdechado
2007-04-20 13:39
2007.06.17
Работа с группами пользователей из Active Directory


15-1179050104
homm
2007-05-13 13:55
2007.06.17
Я счастлив.


1-1176644486
Fantom348
2007-04-15 17:41
2007.06.17
Unicode FilePath


6-1164722681
стьюдентЪ
2006-11-28 17:04
2007.06.17
Не приходит текст посланый по сокету


2-1180072948
ыавпып
2007-05-25 10:02
2007.06.17
SQL-запросы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский