Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 11:36   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Ограниченный тип 0..11 сброс в нуль при перепонении

Код:
Type
 VectInt = 0..11;

Var
 V:VectInt; // По идее должна быть ограничена 0..11

Батон1.Клик
Begin
 Inc(V);
 Label1.Caption := IntToStr(V);
End;

Батон2 аналогичен батону1, только с Dec
Жмакаю на батон 1 11 раз, получаю 11, жмакаю в 12-й раз - получаю 12 (О_о) потом дохожу до 255 и счетчик сбрасывается, аналогично с Dec - счетчик уходит в 255 после 0.
Вопрос - можно ли сделать чтобы обнулялась после 11 и уходила в 11 после нуля в обратную строну? Или придется писать собственный Inc & Dec для этого случая?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 14.01.2010, 11:44   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Для случая с Inc используй V := ( V + 1 ) mod 12; для случая с Dec - V := ( V - 1 ) and 11;
maxionans вне форума Ответить с цитированием
Старый 14.01.2010, 11:44   #3
BioHEX
Пользователь
 
Аватар для BioHEX
 
Регистрация: 04.01.2010
Сообщений: 17
По умолчанию

Можно сделать проверку что-то вроде этого:
var
b:Boolean;

begin
if V=-11 then
b:=false;
if V=11 then
b:=true;
if b then
dec(V)
else
inc(V);

Последний раз редактировалось BioHEX; 14.01.2010 в 11:51.
BioHEX вне форума Ответить с цитированием
Старый 14.01.2010, 11:51   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

maxionans, благодарю!
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 14.01.2010, 11:56   #5
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Не прошёл даже вот такой вариант:

Код:
type
  TVectInt = (aOne = 1, aTwo = 2, aThree = 3);
может быть есть смысл сделать так:
Код:
const
 VectInt = 12;

Var
 V:Byte; // По идее должна быть ограничена 0..11

Батон1.Клик
Begin
 Inc(V);
 Label1.Caption := IntToStr(V mod VectInt );
End;
Greek9000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кнопка сброс Nellas Общие вопросы Delphi 2 21.10.2009 22:19
Если введён первый нуль в Edit,и не стоит запятая после него, выдать ошибку prikolist Общие вопросы C/C++ 10 28.03.2009 16:51
Ограниченный доступ к таблице Excel Fear187 Microsoft Office Excel 1 25.11.2008 16:33
Ограниченный массив.... bygoga Паскаль, Turbo Pascal, PascalABC.NET 10 05.11.2008 13:55
Сброс счетчика vldand Microsoft Office Access 1 20.10.2008 18:40