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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2011, 01:14   #1
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию Конструкция из if else в Delphi

Помогите укоротить код, к тому же он криво работает. Я ничего не могу придумать кроме это ужасного трехэтажного блока.

Есть схема трехфазной цепи с ключами-картинками: image.Tag=1 это вкл image.Tag=0 выкл. Их много...
При определенных позициях разные значения вольтметра и амперметра.
Мне дана таблица со значениями для определенных положений ключей, если бы была формула по расчету, было бы просто, а тут - жесть...

Код:
procedure TForm1.X4XT;
begin
  if (image1.Tag=1) and (image3.Tag=0) then begin VoltStr1:=224; end  // Òàáëèöà 6
  else if (image1.Tag=1) and (image3.Tag=0) and RadioButton6.Checked = True then begin VoltStr1:=3; StaticText2.Caption:='0.66'; end   //Òàáëèöà 7
  else if (image1.Tag=1) and (image3.Tag=0) and RadioButton7.Checked = True then begin VoltStr1:=7; StaticText2.Caption:='0.65'; end   //Òàáëèöà 7
  else if (image1.Tag=1) and (image3.Tag=0) and RadioButton8.Checked = True then begin VoltStr1:=52; StaticText2.Caption:='0.52'; end   //Òàáëèöà 7
  else begin VoltStr1:=0; end;
end;
ЗЫ из каждого if я убрал несколько условий, а то не влезает на страницу, код выглядит ужасно. Помогите разобраться!
freeeeez вне форума Ответить с цитированием
Старый 08.01.2011, 01:57   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Предположем что на форме 5 компонентов Image и что нужно сделать какието действия в зависимости от их свойства Tag.

Решение: "сканировать" все компоненты класса TImage, прочитать у каждого свойство Tag и сформировать "код цепи". Далее проанализировать этот "код цепи" и выполнить действия.

бла бла бла закончилось, теперь реализация:

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var
  i : Integer;
  Shema : String; // "код цепи"
Begin
// Опросим всё Image и сформируем "код цепи"
Shema := '';
For i := 0 to ComponentCount - 1 Do
  If Components[i] Is TImage Then
  Shema := Shema + IntToStr((Components[i] As TImage).Tag);
// Для контроля выведем "код цепи"
ShowMessage(Shema);
// Обрабатываем "код цепи"
If Shema = '10000' Then Begin {Действия для этой схемы} End;
If Shema = '01000' Then Begin {Действия для этой схемы} End;
If Shema = '00100' Then Begin {Действия для этой схемы} End;
If Shema = '00010' Then Begin {Действия для этой схемы} End;
If Shema = '00001' Then Begin {Действия для этой схемы} End;
....
If Shema = '11111' Then Begin {Действия для этой схемы} End;
End;
Например "код цепи" - 01011 будет означать что у 1 и 3 Tag = 0, а у 2,4 и 5 Tag = 1. Покрайней мере теперь визуально проще.
Сливочное масло Valio - компиляция как по маслу

Последний раз редактировалось Valio; 08.01.2011 в 02:00.
Valio вне форума Ответить с цитированием
Старый 08.01.2011, 09:59   #3
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию

спасибо. а как с радиобаттонов считать свойства checked?
freeeeez вне форума Ответить с цитированием
Старый 08.01.2011, 10:26   #4
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию

разобрался.

Код:
function BoolToStr(const value : boolean) : string;
begin
   if value then Result := '1' esle Result := '0';
end;
цикл такой же
freeeeez вне форума Ответить с цитированием
Старый 03.02.2011, 01:10   #5
Pr1zrak800
Новичок
Джуниор
 
Регистрация: 03.02.2011
Сообщений: 1
По умолчанию

Цитата:
разобрался.

Код:


function BoolToStr(const value : boolean) : string;
begin
if value then Result := '1' esle Result := '0';
end;

цикл такой же
А можно поподробней! Как применить результат этот функции к состоянию радио баттона?

Может еще подскажете по синтаксису начинающему програмеру?
как писать оператор с множественными действиями с последующим оператором else?
If условие then
begin
if условие;
ShowMessage('Мы теперь имеем');
if условие;
ShowMessage('множественные строки');
end;
------------------------------------------ - как к верхнему коду дописать else ?
---------------------------------------------------------------
И вот сдесь нужно бы написать исключение else begin ( возможно с вложением с множественными действиями) ?
----------------------------------
вот както так
If условие then
begin
if условие;
ShowMessage('Мы теперь имеем');
if условие;
ShowMessage('множественные строки');
end ------------------------------!!!
else begin -----------!!!
if условие
ShowMessage('Мы теперь имеем');
if условие
ShowMessage('множественные строки');
end;end;end.

Покурил мануалы и разобрался )))

Последний раз редактировалось Stilet; 07.02.2011 в 13:55.
Pr1zrak800 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что значит эта конструкция?! Viconte JavaScript, Ajax 1 12.09.2010 21:07
Конструкция if GBAXA Общие вопросы Delphi 5 04.08.2010 15:12
Что означает конструкция... Alex Cones Общие вопросы Delphi 7 13.12.2009 16:06
Конструкция try..except anGeee Общие вопросы Delphi 2 21.05.2009 11:34
Конструкция файла SunKnight Общие вопросы Delphi 4 23.04.2008 08:26