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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2012, 12:55   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию Быстрое сравнение многих переменных на совпадение

В заголовке не знал, как более доходчиво написать. Все видели как работают в различных приложениях Хоткеи. Когда нельзя (либо можно, но будет предупреждение) одно и то же сочетание назначать разным действиям. У меня аналогичная ситуация: в приложении есть настраиваемые хоткеи (7 штук всего). Каждое сочетание, как известно хранится в цифровом виде (hotkey.hotkey). Прошу помочь с алгоритмом проверки всех семи хоткеев на несовпадения.
Сам могу только тупым перебором делать проверку, что не есть хорошо:
Код:
  If (HotKey1.HotKey<>HotKey2.HotKey) and (HotKey1.HotKey<>HotKey3.HotKey) and (HotKey1.HotKey<>HotKey4.HotKey)
      and (HotKey1.HotKey<>HotKey5.HotKey) and (HotKey1.HotKey<>HotKey6.HotKey)  and (HotKey1.HotKey<>HotKey7.HotKey)
  then
    //регистрируем хоткей
  else
    ShowMessage('Сочетание '+ ShortCutToText(HotKey1.HotKey)+' уже используется!');
И так семь раз?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 13.06.2012, 14:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. массив HotKey-ями, хранить в нем и в цикле проверять
2. В цикле по Components формы выбирать THotKey и проверять
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.06.2012 в 14:09.
Аватар вне форума Ответить с цитированием
Старый 13.06.2012, 21:52   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Код:
var
  LStr:AnsiString;
...
LStr:='';
for i:=1 to 7 do
with THotKey(FindComponent('HotKey'+IntToStr(i))) do
begin
  if Pos(IntToStr(HotKey),LStr)>0 then
  begin
    ShowMessage('Сочетание '+ ShortCutToText(HotKey)+' уже используется!');
    Break;
  end;
  LStr:=LStr+IntToStr(HotKey);
end;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самое быстрое сравнение текстовых файлов blblbl-org Общие вопросы Delphi 17 26.04.2012 15:19
Сравнение переменных snikers987 PHP 26 12.02.2011 01:01
Экстремумов многих переменных Stranger333 Помощь студентам 4 25.11.2010 00:45
Сравнение объектных переменных NomadV Microsoft Office Word 1 09.04.2010 16:44