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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2010, 12:35   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию TRUE в одном из элементов → FALSE во всех остальных.

Код:
A : Array of Boolean; //ЛЮБОЙ тип, который 
// можно проверить в условии  IF/CASE без всяких проблем
// в одну строку.
Код:
SetLength(A, 5);
For I := 1 to 4 Do
 A[I] := FALSE;
A[0] := TRUE;
Procedure Activate(B : Boolean); //Такой же пофигизм, что и выше.

Як кастануть процедуру, которая будет "включать" один элемент, а остальные "гасить"?

Есть вариант не через массив, а через число INTEGER, а оперировать битами. Но тогда
1) Трудно будет "на взгляд" определять, какой режим включен.
2) Не получится наколдовать CASE.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 13.07.2010, 12:40   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
1) Трудно будет "на взгляд" определять, какой режим включен.
Почему? Написали функцию один раз и когда надо, тогда и вызвали. Наша кошка тоже сначала боялась пылесоса, а потом ничего, втянулась.

Цитата:
2) Не получится наколдовать CASE.
Это принципиально для решения задачи?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.07.2010, 12:43   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Это принципиально для решения задачи?
Код:
Function WindowProc(Hand, Mess :LongWord; wParam, lParam: LongInt): LongInt; StdCall;
  Begin
   Result := DefWindowProc(Hand, Mess, wParam, lParam);
   If SplashMode Then                              // ┌ SPLASH MODE
    Case Mess Of                                   // │
     WM_DESTROY     : UNTForms.ShutDown;           // │
     WM_KEYDOWN     : UNTForms.CheckKey(wParam);   // │
     WM_PAINT       : UNTGraph.DrawB;              // │
   End Else                                        // └ SPLASH MODE
   If MainMenuMode Then                            // ┌ MAIN MENU MODE
    Case Mess Of                                   // │
     WM_DESTROY     : UNTForms.ShutDown;           // │
     WM_PAINT       : UNTGraph.DrawB;              // │
    End;                                           // └ MAIN MENU MODE
  End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 13.07.2010, 12:56   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не совсем уловил принцип, хотя это не важно. Не совсем понял, где возникнут проблемы с Case.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.07.2010, 12:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Як кастануть процедуру, которая будет "включать" один элемент, а остальные "гасить"?
Не нравится в цикле делай так:
Код:
ZeroMemory(a,Length(a));
a[такое то]:=true;
А чем цикл то не угодил?
Код:
SetLength(A, 5);
For I := low(a) to high(a) Do A[i] := FALSE;
A[0] := TRUE;
По-моему достаточно надежно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 12:59   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Не совсем уловил принцип, хотя это не важно
В зависимости от того "режима", который сейчас включен (идет SPLASH, INTRO, MENU и т.д.) по разному обрабатываются события - ведь у клавиши ESC должно быть несколько функций в разных "разделах".
Цитата:
Не совсем понял, где возникнут проблемы с Case.
FLAG : Integer;

Case FLAG of ...
И перебирать все 2-4 ляма значений?

UPD --------------------------

Хм... Тогда придется делать константы типа INTRO = $00
И делать так:
Activate(INTRO);

Ну хорошо. Как вариант.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 13.07.2010 в 13:01.
Alex Cones вне форума Ответить с цитированием
Старый 13.07.2010, 13:09   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
И перебирать все 2-4 ляма значений?
Зачем? У тебя и так Mess :LongWord; Ты же лямы сейчас не перебираешь?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.07.2010, 13:10   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что такое "лямы"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 13:14   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что такое "лямы"?
Миллионы - он имеет ввиду большой диапазон значений от 0 до 4294967295
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.07.2010, 13:14   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Ты же лямы сейчас не перебираешь?
Тоже верно... В принципе так и сделаю. Спасибо.

Цитата:
Что такое "лямы"?
http://lurkmore.ru/9000


СТОП! А если режимов будет больше, чем бит в INTEGER?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
False,True Jony Wocker Общие вопросы C/C++ 2 06.02.2010 00:42
Окно поверх всех остальных Vikelf Помощь студентам 2 28.05.2009 17:11
Паскаль. Вставить в массив элемент со сдвигом всех остальных элементов Yulya Помощь студентам 1 31.03.2009 10:53
True или False, в зависимости от того, имеют три данных числа одинаковую четность DjVidan Помощь студентам 4 12.10.2008 22:02
Проверка (True or False for CheckBox) NeiL Общие вопросы Delphi 5 31.01.2008 09:42