Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
ВнизКак правильно создать оператор проверки? Найти похожие ветки
← →
IIIakal (2009-03-19 09:39) [0]Здравствуйте! Помогите пожалуйста решить такую задачу:
имеется 10 переменных: s1, s2 и т.д. нужно сделать такую проверку
if s1>0 then
набор команд
else
if s2>0 then
набор команд
else
и т.д.
Т.е. если переменная больше 0 , то выполнять заданные действия.
Спасибо за внимание!
← →
ЮЮ © (2009-03-19 09:41) [1]
if s1>0 then begin
набор команд
end
else if s2>0 then begin
набор команд
end
else
и т.д.
← →
немо2 (2009-03-19 09:43) [2]если переменная больше 0 , то выполнять заданные действия
и проверить следующую(по такому же принципу) иначе прекратить ?
← →
IIIakal (2009-03-19 09:46) [3]
> ЮЮ
не, я так писал, ругается на второе else: ";" expected "ELSE" found
← →
IIIakal (2009-03-19 09:46) [4]
> немо2
Да
← →
ЮЮ © (2009-03-19 09:48) [5]Или тебя смущает 10 if-oв? А "набор команд" везде свой?
Спасибо за внимание!
Пожалуйста! Лучше бы вопрос задал, вежливый ты наш :) В чем сут проблемы то?
← →
ЮЮ © (2009-03-19 09:50) [6]
> не, я так писал, ругается на второе else: ";" expected "ELSE"
> found
значит не так писал
← →
немо2 (2009-03-19 09:53) [7]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;
← →
IIIakal (2009-03-19 09:56) [8]
> В чем сут проблемы то?
Переменные получаем из БД, каждая переменная отвечает за показ картинки в разных image, т.е. если =0 то картинку не показывать, если любое другое число то выводится картинка....
> А "набор команд" везде свой?
да, s1 - передает параметры image1, s2 - image2 и т.д.
← →
немо2 (2009-03-19 10:02) [9]да,
tMas=record
fa:integer;
fp:procedure;
end;
← →
ЮЮ © (2009-03-19 10:20) [10]
>
> Переменные получаем из БД
Врешь, из БД получаешь значения, а хранить их в переменных s1..s10 - это твое решение.
Хранить можно и в array of string и в TStrings, тем более, что алгоритм один и тот же.
← →
Плохиш © (2009-03-19 10:22) [11]
> IIIakal (19.03.09 09:56) [8]
А я так и не понял.
В чем сут проблемы то?
← →
ЮЮ © (2009-03-19 10:28) [12]
> В чем сут проблемы то?
синтаксическая ошибка в коде";" expected "ELSE" found";" expected "ELSE" found
навела автора на мысль, что в дельфи трудно выразить очевидную логику автора.
дальнейшие реплики автора наводят на мысль, что цыклы он ещё не проходил, но уже знаетif then else
, однако о необходимости форматировать код, дабы избежать элементарных ошибок он тоже, похоже, не знает
← →
IIIakal (2009-03-19 10:34) [13]Извините, я полный чайник в Дельфе/паскале, не спорю, поэтому и прошу помощи
> однако о необходимости форматировать код
форматировать? как?
← →
ЮЮ © (2009-03-19 10:37) [14]
> форматировать? как?
Приведи код, который реально вызывал
> не, я так писал, ругается на второе else: ";" expected "ELSE"
> found
>
и я покажу как :)
← →
IIIakal (2009-03-19 10:44) [15]
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;
← →
{RASkov} © (2009-03-19 10:46) [16]> [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;
не в том месте бегины понаставил..... горе программист :)
← →
Плохиш © (2009-03-19 10:48) [17]
> IIIakal (19.03.09 10:44) [15]
Или читаепь про оператор if then else или занимайся своими прямыми обязанностями.
← →
Плохиш © (2009-03-19 10:49) [18]
> {RASkov} © (19.03.09 10:46) [16]
бегины-то тут при чём, к тому же поставленные синтаксически верно.
← →
{RASkov} © (2009-03-19 10:50) [19]> [18] Плохиш © (19.03.09 10:49)
Синтаксически верно, но логически нет....
Автору вопроса достаточно внимательно посмотреть на [1]...
← →
Плохиш © (2009-03-19 10:53) [20]
> {RASkov} © (19.03.09 10:50) [19]
Действительно, извиняюсь, дальше второй комбинации else begin мой взгляд и опускаться не стал :-)
← →
Плохиш © (2009-03-19 10:55) [21]
> {RASkov} © (19.03.09 10:50) [19]
Хотя скажем так "не в том месте энды понаставил..... горе программист" ;-)
← →
ЮЮ © (2009-03-19 10:59) [22]
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;
← →
IIIakal (2009-03-19 11:07) [23]Убрал переменные, создал два массива....программа компилируется, но отоброжатеся только первый image///
if s[1]>0 then begin
slot1.Visible:=true;
label1.Visible:=true;
label1.Caption:=inttostr(k[1]);
image1.Picture.LoadFromFile("img/noj.gif");
image1.Visible:=true;
end
else if s[2]>0 then begin
slot2.Visible:=true;
label2.Visible:=true;
label2.Caption:=inttostr(k[2]);
image2.Picture.LoadFromFile("img/noj.gif");
image2.Visible:=true
end
else if s[3]>0 then begin
slot3.Visible:=true;
label3.Visible:=true;
label3.Caption:=inttostr(k[3]);
image3.Picture.LoadFromFile("img/noj.gif");
image3.Visible:=true;
end
end;
← →
Медвежонок Пятачок © (2009-03-19 11:11) [24]все верно
если s[1]>0, то другие ветки ифа просто не выполняются.
букварь-то покури....
← →
ЮЮ © (2009-03-19 11:12) [25]
> Убрал переменные, создал два массива....программа компилируется,
> но отоброжатеся только первый image///
else здесь не нуженif s[1]>0 then begin
slot1.Visible:=true;
label1.Visible:=true;
label1.Caption:=inttostr(k[1]);
image1.Picture.LoadFromFile("img/noj.gif");
image1.Visible:=true;
end;
if s[2]>0 then begin
slot2.Visible:=true;
label2.Visible:=true;
label2.Caption:=inttostr(k[2]);
image2.Picture.LoadFromFile("img/noj.gif");
image2.Visible:=true
end;
а отступу внутри блока begin ... end - ОЮЯЗАТЕЛЬНЫ
← →
IIIakal (2009-03-19 11:13) [26]а как тогда сделать, может через метки?
← →
ЮЮ © (2009-03-19 11:13) [27]"img/noj.gif"
верни как было :)
← →
IIIakal (2009-03-19 11:21) [28]Ура заработало!!! Всем огромное спасибо за помощь)))
← →
{RASkov} © (2009-03-19 11:24) [29]Вот примерно так попробуй:
f:=S[1]>0;
for N:=Low(S) to High(S) do begin
Label[N].Visible:=F;
Image[N].Visible:=F;
if F then begin
F:=S[N]>0;
Label[N].Caption:=IntToStr(K[N]);
Image[N].Picture.LoadFromFile(<сформированное имя>);
end;
end;
где
Label: array [1..10] Of TLabel;
Image: array [1..10] of TImage;
S, K: array [1..10] of Integer;
F: boolean;
← →
IIIakal (2009-03-19 11:45) [30]
> {RASkov}
по моему нельзя создать массив с именем Label...
← →
ЮЮ © (2009-03-19 11:52) [31]
>
> по моему нельзя создать массив с именем Label
создай с другим. А по моему нельзя 10 раз подряд копипастить один и тот же код. Тем более, что завтра слотов потребуется 100, а послезавтра их количестово будет задаваться динамически в зависимости от записей, возвращаемых запросом. Но тебя же это не останавливает :)
← →
IIIakal (2009-03-19 14:08) [32]
> for N:=Low(S) to High(S) do begin
N - что это?
← →
Медвежонок Пятачок © (2009-03-19 14:15) [33]буква
← →
IIIakal (2009-03-19 14:16) [34]смешно
← →
Медвежонок Пятачок © (2009-03-19 14:19) [35]переменная цикла, принимающая значения от Low(S) до High(S)
← →
IIIakal (2009-03-19 14:21) [36]спс
← →
Медвежонок Пятачок © (2009-03-19 14:24) [37]а то типа сразу было не понятно
← →
IIIakal (2009-03-19 14:36) [38]не я понял что от минимума до максимума массива s
а как и где она объявляется?
я написал вот так:
var
Kol: array [1..10] Of TLabel;
Image: array [1..10] of TImage;
S, K: array [1..10] of integer;
F: boolean;
N: integer;
begin
запись значений в массив
:=S[1]>0;
for N:=Low(S) to High(S) do begin
Kol[N].Visible:=f;
Image[N].Visible:=f;
if F then begin
F:=S[N]>0;
Kol[N].Caption:=IntToStr(K[N]);
Image[N].Picture.LoadFromFile("img/1.jpg");
end;
вылетает с ошибкой при выполнение...
← →
IIIakal (2009-03-19 14:38) [39]
> запись значений в массив
>
> :=S[1]>0;
*
f:=s[1]>0;
нескаприровался
← →
Anatoly Podgoretsky © (2009-03-19 14:41) [40]Зря ты это с программированием связался, не твое это.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.007 c