![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Приветствую всех, уважаемые форумчане!
Помогите решить задачу. Есть программа-Ланчер на которой есть несколько CheckBox'ов. Каждый CheckBox должен передавать определенные ключи, допустим в какую-нибудь переменную для запуска другой программы. Проблема в том, что каждый CheckBox должен передавать как минимум два таких ключа. Допустим: Код:
CheckBox1 = "FASTLOCK=ON NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3" CheckBox2 = "EDITOR BLUE NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3" Как видите некоторые параметры есть и там и там. Если будет отмечен только 1 CheckBox тогда все проста, а если оба? Ключи не должны дублироваться в этом случае. И строка должна выглядеть в итоге так: Код:
"FASTLOCK=ON EDITOR BLUE NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3" Как все это реализовать по умному? З.Ы. Сами CheckBox'ы читаю и сохраняю из/в ini-файл. Прошу, помогите/подскажите как это все воплотить в жизнь. Буду очень признателен за помощь. |
#2
|
|||
|
|||
![]() Как то так
Код:
Param:=''; if CheckBox1.Checked then Param:=Param+' FASTLOCK=ON'; if CheckBox2.Checked then Param:=Param+' EDITOR BLUE'; if CheckBox1.Checked or CheckBox2.Checked then Param:=Param+' NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3'; |
Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
Alloc (30.01.2015)
|
#3
|
||||
|
||||
![]() Спасибо Вам за код, снова помогаете)
Этот вариант вроде бы простой но в то же время предвещает много головной боли в моем случае, так как CheckBoxs'ов много, около 20-ти и для каждой комбинации придется таким образом писать.. И еще проблема в том, что если допустим во втором CheckBoxs'е будет ключ - "FASTLOCK=OFF" тогда код отработает не так как надо: Код:
Param:=''; if CheckBox1.Checked then Param:=Param+' FASTLOCK=ON'; if CheckBox2.Checked then Param:=Param+' FASTLOCK=OFF EDITOR BLUE'; if CheckBox1.Checked or CheckBox2.Checked then Param:=Param+' NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3'; результат будет - Код:
"FASTLOCK=ON FASTLOCK=OFF...." Заранее спасибо |
#4
|
||||
|
||||
![]() У меня есть мысль сделать следующим образом:
Код:
if chk1.Checked then Param:= Param + 'A'; if chk2.Checked then Param:= Param + 'B'; if chk3.Checked then Param:= Param + 'C'; if chk4.Checked then Param:= Param + 'D'; if chk5.Checked then Param:= Param + 'E'; if chk6.Checked then Param:= Param + 'F'; if chk7.Checked then Param:= Param + 'G'; if chk8.Checked then Param:= Param + 'H'; Далее уже каждой комбинации прописать определенный список параметров: Код:
if Param:= 'A' then Key:='FASTLOCK=ON NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3'; if Param:= 'B' then Key:='FASTLOCK=OFF EDITOR BLUE NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3'; if Param:= 'AB' then Key:='FASTLOCK=ON EDITOR BLUE SOFTWARE3D NOPRELOADSECTORS CHUNKCACHESIZE=16 GAMESPEED=3'; if Param:= 'AC' then ... if Param:= 'AD' then ... ... Что Вы думаете об этом способе? И можно ли его как то упростить? Возможно Вы сможете предложить что то более правильное? Заранее спасибо. Последний раз редактировалось Alloc, 30.01.2015 в 19:51. |
#5
|
|||
|
|||
![]() Да, можно. Читаем что такое Хэш-мап.
Фактически, можно имплементировать его на простом TStringList. К каждому флажку у тебя должен быть прицеплен какми-либо образом список (можно массив) нужных значений. Далее, когда ты анализируешь состояние твоих 20 флажков, то: 1. Создаешь пустой список TStringList 2. Для каждого флажка 2.1. Для каждого привязанного к флажку параметра 2.1.1. Ищем такой параметр в списке 2.1.2. Если найден, то пропускаем, если не найден, то добавляем. Таким побразм в конце анализа у тебя будет набор уникальных параметров. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Alloc (31.01.2015)
|
#6
|
||||
|
||||
![]() Боюсь моих знаний в программировании не достаточно, чтобы реализовать это.. если это не сложно, Вы не могли бы привести пример? Буду Вам очень признателен.
|