IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> case of + DayOfTheWeek, неработает
compiler
сообщение 3.03.2007 19:05
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


есть урывок <<прблемного>> кода...
case DayOfTheWeek(Now) of
'1' : begin lgr:= 0; pgr:=7; end
'2' : lgr:=-1; pgr:=6;
'3' : lgr:=-3; pgr:=5;
'4' : lgr:=-4; pgr:=4;
'5' : lgr:=-5; pgr:=3;
'6' : lgr:=-6; pgr:=2;
'7' : lgr:=-7; pgr:=1;
end;

наверное надо раставить блоки... но все равно не работает...
заранее благодарен.

P.S. может case ищё эти типы не обрабатывает...

Сообщение отредактировано: compiler - 3.03.2007 19:16


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2007 19:16
Сообщение #2


Гость






DayOfTheWeek возвращает Integer, а не Char ...
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 19:18
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 3.03.2007 18:16) *

DayOfTheWeek возвращает Integer, а не Char ...

а где выход?
может надо както приабразовывать(неявное преобразование), а как?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 3.03.2007 19:18
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
наверное надо раставить блоки... но все равно не работает...

Конечно же повсюду поставить begin и end

case DayOfTheWeek(Now) of
'1' : begin lgr:= 0; pgr:=7; end;
'2' : begin lgr:=-1; pgr:=6; end;
'3' : begin lgr:=-3; pgr:=5; end;
'4' : begin lgr:=-4; pgr:=4; end;
'5' : begin lgr:=-5; pgr:=3; end;
'6' : begin lgr:=-6; pgr:=2; end;
'7' : begin lgr:=-7; pgr:=1; end;
end;





--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 19:19
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Bokul @ 3.03.2007 18:18) *

Конечно же повсюду поставить begin и end

а как с типами?


Сообщение отредактировано: compiler - 3.03.2007 19:19


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2007 19:20
Сообщение #6


Гость






Цитата
а где выход?


case DayOfTheWeek(Now) of
1 : begin lgr:= 0; pgr:=7; end;
2 : begin lgr:=-1; pgr:=6; end;
3 : begin lgr:=-3; pgr:=5; end;
4 : begin lgr:=-4; pgr:=4; end;
5 : begin lgr:=-5; pgr:=3; end;
6 : begin lgr:=-6; pgr:=2; end;
7 : begin lgr:=-7; pgr:=1; end;
end;

?
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 19:24
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 3.03.2007 18:20) *

...?

благодарю. это мне и надо было...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 3.03.2007 19:44
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Мне не совсем понятно, зачем здесь кейс. В данном конкретном случае можно обойтись

DOTW := DayOfTheWeek(Now)
if (DOTW >= 1) and (DOTW <= 7) then begin
Lgr := 1 - DOTW - byte(DOTW > 2);
Pgr := 8 - DOTW;
end;

.

Сообщение отредактировано: TarasBer - 3.03.2007 19:45


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2007 19:50
Сообщение #9


Гость






if (DOTW >= 1) and (DOTW <= 7) then begin
то есть, возможны и другие варианты? blink.gif Тогда пример в студию, КОГДА DOTW не будет попадать в интервал 1 .. 7 ...
 К началу страницы 
+ Ответить 
TarasBer
сообщение 3.03.2007 19:57
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Это я перестраховался... Если убрать иф, бегин и енд, то код только выиграет, сократившись ещё на 2 строчки.

Сообщение отредактировано: TarasBer - 3.03.2007 19:58


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 20:29
Сообщение #11


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(TarasBer @ 3.03.2007 18:44) *

Мне не совсем понятно, зачем здесь кейс. В данном конкретном случае можно обойтись

у меня были подобные строчки...
lgr := 1 - DayOfTheWeek(Now);
pgr := lgr + 7;

но позже возникла необходимость вставлять в действия еще операторы(в примере они не приведины, для краткости...) + читабельность, сейчас необходимость пропала (или еще нет:) ),вобщем в разработке оба варианта...

P.S. что делает строчка
- byte(DOTW > 2)



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 3.03.2007 20:32
Сообщение #12


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


DOTW > 2 - это выражение булевского типа. Оно занимает один байт. Причём этот байт равен 1, если выражение верно и 0 если нет. Это обычная ретипизация, ничего особенного.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 20:46
Сообщение #13


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(TarasBer @ 3.03.2007 19:32) *

ничего особенного

а зачем оно...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 3.03.2007 21:01
Сообщение #14


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Цитата(compiler @ 3.03.2007 20:46) *

а зачем оно...

А затем, чтобы вместо вычитания из числа булевской переменной (что запрещено синтаксисом), вычитать из числа число, полученное из булевской переменной.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 3.03.2007 21:03
Сообщение #15


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(TarasBer @ 3.03.2007 20:01) *

А затем, чтобы вместо вычитания из числа булевской переменной (что запрещено синтаксисом), вычитать из числа число, полученное из булевской переменной.

благодарю...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2024 15:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"