Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно создать оператор проверки? [D7]


Страницы:   1 2 3 4

IIIakal ©   (2009-03-19 09:39:00) 

Здравствуйте! Помогите пожалуйста решить такую задачу:
имеется 10 переменных: s1, s2 и т.д. нужно сделать такую проверку


if s1>0 then
набор команд
else
if s2>0 then
набор команд
else
и т.д.


Т.е. если переменная больше 0 , то выполнять заданные действия.
Спасибо за внимание!


ЮЮ   (2009-03-19 10:59:00) [41]

 if s1>0 then begin
   slot1.Visible:=true;
   label1.Visible:=true;
   label1.Caption:=inttostr(k1);
   image1.Picture.LoadFromFile('img/1.gif');
   image1.Visible:=true;
 end
 else begin
   if s2>0 then
     slot2.Visible:=true;
   label2.Visible:=true;
   label2.Caption:=inttostr(k2);
   image2.Picture.LoadFromFile('img/2.gif');
   image2.Visible:=true
 end
 else begin
   if s3>0 then
     slot3.Visible:=true;
   label3.Visible:=true;
   label3.Caption:=inttostr(k3);
   image3.Picture.LoadFromFile('img/3.gif');
   image3.Visible:=true;
 end
 else
 end;

Подчеркнуте - не к селу, не к городу.
Твой код не соответствует subj-у
Должно быть

 if s1>0 then begin
   slot1.Visible:=true;
   label1.Visible:=true;
   label1.Caption:=inttostr(k1);
   image1.Picture.LoadFromFile('img/1.gif');
   image1.Visible:=true;
 end
 else if s2>0 then begin
     slot2.Visible:=true;
   label2.Visible:=true;
   label2.Caption:=inttostr(k2);
   image2.Picture.LoadFromFile('img/2.gif');
   image2.Visible:=true
 end
 else if s3>0 then begin
   slot3.Visible:=true;
   label3.Visible:=true;
   label3.Caption:=inttostr(k3);
   image3.Picture.LoadFromFile('img/3.gif');
   image3.Visible:=true;
 end
 ...


при условии, что изначально установлено
   slot1.Visible:=false;
   label1.Visible:=false;
и т.д.

но код всё-же может и должен быть переписан так, чтобы было
for i := 1 to 10 do begin
 <код должен использовать переменную i>
end;


Плохиш   (2009-03-19 10:55:00) [42]


> {RASkov} ©   (19.03.09 10:50) [19]

Хотя скажем так "не в том месте эндыпонаставил..... горе программист" ;-)


Плохиш   (2009-03-19 10:53:00) [43]


> {RASkov} ©   (19.03.09 10:50) [19]

Действительно, извиняюсь, дальше второй комбинации else begin мой взгляд и опускаться не стал :-)


{RASkov}   (2009-03-19 10:50:00) [44]

> [18] Плохиш ©   (19.03.09 10:49)

Синтаксически верно, но логически нет....

Автору вопроса достаточно внимательно посмотреть на [1]...


Плохиш   (2009-03-19 10:49:00) [45]


> {RASkov} ©   (19.03.09 10:46) [16]

бегины-то тут при чём, к тому же поставленные синтаксически верно.


Плохиш   (2009-03-19 10:48:00) [46]


> IIIakal   (19.03.09 10:44) [15]

Или читаепь про оператор if then else или занимайся своими прямыми обязанностями.


{RASkov}   (2009-03-19 10:46:00) [47]

> [15] IIIakal   (19.03.09 10:44)
> if s1>0 then begin
> slot1.Visible:=true;
> label1.Visible:=true;
> label1.Caption:=inttostr(k1);
> image1.Picture.LoadFromFile('img/1.gif');
> image1.Visible:=true;
> end
> else
> begin
> if s2>0 then
> slot2.Visible:=true;
> label2.Visible:=true;
> label2.Caption:=inttostr(k2);
> image2.Picture.LoadFromFile('img/2.gif');
> image2.Visible:=true
> end
> else
> begin
> if s3>0 then
> slot3.Visible:=true;
> label3.Visible:=true;
> label3.Caption:=inttostr(k3);
> image3.Picture.LoadFromFile('img/3.gif');
> image3.Visible:=true;
> end
> else
> end;

не в том месте бегины понаставил..... горе программист :)


IIIakal   (2009-03-19 10:44:00) [48]


if s1>0 then begin
slot1.Visible:=true;
label1.Visible:=true;
label1.Caption:=inttostr(k1);
image1.Picture.LoadFromFile('img/1.gif');
image1.Visible:=true;
end
else
begin
if s2>0 then
slot2.Visible:=true;
label2.Visible:=true;
label2.Caption:=inttostr(k2);
image2.Picture.LoadFromFile('img/2.gif');
image2.Visible:=true
end
else
begin
if s3>0 then
slot3.Visible:=true;
label3.Visible:=true;
label3.Caption:=inttostr(k3);
image3.Picture.LoadFromFile('img/3.gif');
image3.Visible:=true;
end
else
end;


ЮЮ   (2009-03-19 10:37:00) [49]


> форматировать? как?


Приведи код, который реально вызывал


> не, я так писал, ругается на второе else: ';' expected 'ELSE'
> found
>


и я покажу как :)


IIIakal   (2009-03-19 10:34:00) [50]

Извините, я полный чайник в Дельфе/паскале, не спорю, поэтому и прошу помощи

> однако о необходимости форматировать код

форматировать? как?


ЮЮ   (2009-03-19 10:28:00) [51]


> В чем сут проблемы то?


синтаксическая ошибка в коде
';' expected 'ELSE' found';' expected 'ELSE' found  
навела автора на мысль, что в дельфи трудно выразить очевидную логику автора.
дальнейшие реплики автора наводят на мысль, что цыклы он ещё не проходил, но уже знает if then else, однако о необходимости форматировать код, дабы избежать элементарных ошибок он тоже, похоже, не знает


Плохиш   (2009-03-19 10:22:00) [52]


> IIIakal   (19.03.09 09:56) [8]

А я так и не понял.
В чем сут проблемы то?


ЮЮ   (2009-03-19 10:20:00) [53]


>
> Переменные получаем из БД


Врешь, из БД получаешь значения, а хранить их в переменных s1..s10 - это твое решение.

Хранить можно и в array of string и в TStrings, тем более, что алгоритм один и тот же.


немо2   (2009-03-19 10:02:00) [54]

да,
 tMas=record
  fa:integer;
  fp:procedure;
 end;


IIIakal   (2009-03-19 09:56:00) [55]


> В чем сут проблемы то?

Переменные получаем из БД, каждая переменная отвечает за показ картинки в разных image, т.е. если =0 то картинку не показывать, если любое другое число то выводится картинка....
> А "набор команд" везде свой?

да, s1 - передает параметры image1, s2 - image2 и т.д.


немо2   (2009-03-19 09:53:00) [56]

procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..3] of tMas;
i:integer;
procedure p1; begin  showmessage('1'); end;
procedure p2; begin  showmessage('2'); end;
procedure p3; begin  showmessage('3'); end;
begin
a[1].fa:=1;
a[1].fp:=@p1;
a[2].fa:=-1;
a[2].fp:=@p2;
a[3].fa:=1;
a[3].fp:=@p3;

for i:=1 to 3 do
 if a[i].fa<0
  then exit
  else a[i].fp;
end;


ЮЮ   (2009-03-19 09:50:00) [57]


> не, я так писал, ругается на второе else: ';' expected 'ELSE'
> found


значит не так писал


ЮЮ   (2009-03-19 09:48:00) [58]

Или тебя смущает 10 if-oв? А "набор команд"везде свой?

Спасибо за внимание!
Пожалуйста! Лучше бы вопрос задал, вежливый ты наш :) В чем сут проблемы то?


IIIakal   (2009-03-19 09:46:00) [59]


> немо2

Да


IIIakal   (2009-03-19 09:46:00) [60]


> ЮЮ

не, я так писал, ругается на второе else: ';' expected 'ELSE' found


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо