Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

Отличие делфишного CASE от сишного SWITCH   Найти похожие ветки 

 
StriderMan ©   (2006-08-15 13:06) [0]

вот такой код на делфи к сожалению не прокатывает

procedure DoSmth(AVal: integer);
begin
 case AVal of
 1: ShowmEssage("1");
 2: ShowMessage("2");
 1..2: ShowMessage("1 or 2");
 end;
end;


насколько я помню, на сях такое сделать можно. Почему так?


 
Romkin ©   (2006-08-15 13:08) [1]

Потому что case выполняет только один пункт, первый из подходящих. После этого выходит из case.


 
Nic ©   (2006-08-15 13:08) [2]

Зачем нужна эта строка? :
1..2: ShowMessage("1 or 2");


 
Джо ©   (2006-08-15 13:09) [3]

В C при обработке каждого из вариантов в Switch"e не происходит выход из блока Switch (нужен break).


 
Ega23 ©   (2006-08-15 13:12) [4]

procedure DoSmth(AVal: integer);
begin
Case AVal of
 1..2 begin
            case AVal of
            1: ShowmEssage("1");
            2: ShowMessage("2");
            end;
            ShowMessage("1 or 2");
        end;
  else Showmessage("not (1 or 2)");
end;
end;

?


 
Desdechado ©   (2006-08-15 13:13) [5]

В Си этоточка входа, а выход только по break, которого может и не быть вовсе. В Паскале же выполняется всегда только один кусок, что, имхо, правильнее.

Джо ©   (15.08.06 13:09) [3]
Да, иногда это удобно, когда выполнение проходит по совокупности последовательных веток. Но чаще является причиной скрытых ошибок.
Если я правильно помню, в C# это заблокировали.


 
StriderMan ©   (2006-08-15 13:14) [6]


> Ega23 ©   (15.08.06 13:12) [4]

ну типа того. только это громоздко.


> Nic ©   (15.08.06 13:08) [2]

например в случае в каждом конкретном случае выполняются какие-то действия, но скажем в случае 1,2 нужно сделать нечто общее, а в случае 3,4 нечто другое общее.


 
Ega23 ©   (2006-08-15 13:15) [7]


> ну типа того. только это громоздко.


Громоздко логику извращённую вертеть.


 
Плохиш ©   (2006-08-15 13:16) [8]


> StriderMan ©   (15.08.06 13:06)
> Почему так?

Ответ на этот вопрос находиться в описаниях языков.


 
Джо ©   (2006-08-15 13:17) [9]

> [5] Desdechado ©   (15.08.06 13:13)
> Но чаще является причиной скрытых
> ошибок.

Согласен.


> Если я правильно помню, в C# это заблокировали.

Заблокировали. Пока break не поставишь, компилятор будет ругаться.


 
Rouse_ ©   (2006-08-15 13:17) [10]


> Потому что case выполняет только один пункт, первый из подходящих.
>  После этого выходит из case.

без бряка еще и на default выскочит.



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

Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.072 c
2-1155886701
Chort
2006-08-18 11:38
2006.09.10
EhLib


3-1151919542
Mishenka
2006-07-03 13:39
2006.09.10
База видна только на компьютерах, на которых установлена Delphi


15-1155752035
ArtemESC
2006-08-16 22:13
2006.09.10
Microsoft Word шпионит...


15-1155142507
Джо
2006-08-09 20:55
2006.09.10
MIDlet Pascal — вопли и жалобы


3-1152098680
antoxa2005
2006-07-05 15:24
2006.09.10
Подскажите, а как организовать блокировку записи MS SQL Server





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский