Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.02.09;
Скачать: CL | DM;

Вниз

Тест на Делфи   Найти похожие ветки 

 
ad1951 ©   (2013-01-21 04:28) [0]

procedure TU_Test2.OKBtnClick(Sender: TObject);
begin
Ball2:=0;
if (checkbox2.Checked=true) and (checkbox4.Checked=true) and (checkbox1.Checked=false) and
(checkbox3.Checked=false) and (checkbox5.Checked) then Ball2:=Ball2+1;
if (checkbox7.Checked=true) and (checkbox9.Checked=true) and (checkbox6.Checked=false) and
(checkbox8.Checked=false) and (checkbox10.Checked) then Ball2:=Ball2+1;
if (checkbox12.Checked=true) and (checkbox15.Checked=true) and (checkbox11.Checked=false) and
(checkbox13.Checked=false) and (checkbox14.Checked) then Ball2:=Ball2+1;
if (checkbox17.Checked=true) and (checkbox20.Checked=true) and (checkbox16.Checked=true) and
(checkbox18.Checked=false) and (checkbox19.Checked) then Ball2:=Ball2+1;
if (checkbox22.Checked=true) and (checkbox24.Checked=true) and (checkbox21.Checked=false) and
(checkbox23.Checked=false) and (checkbox25.Checked) then Ball2:=Ball2+1;
 Label7.Caption:="Ball2="+inttostr(Ball2);
end;

Почему Ball2 ВСЕГДА приобретает значения 0? Все компоненты checkbox сгруппированы по 5 в 5 GroupBox


 
MonoLife ©   (2013-01-21 05:33) [1]

Ball2:=Ball2+1;


 
MonoLife ©   (2013-01-21 05:35) [2]

проверять чекбоксы лучше
так: if (checkbox.Checked) или if (not checkbox.Checked)


 
MBo ©   (2013-01-21 05:40) [3]

>Почему Ball2 ВСЕГДА приобретает значения 0?
Видимо, не выполняется ни одно из слоных логических условий


 
brother ©   (2013-01-21 06:31) [4]

Ball2:=0;
поставь сюда breakpoint и пройдись по всем условиям Trace into и узнаешь, выполняются ли условия...


 
brother ©   (2013-01-21 06:34) [5]

ps.
> if (checkbox2.Checked=true)

=
if (checkbox2.Checked)


 
Dimka Maslov ©   (2013-01-21 10:05) [6]

Для проверки условия на нескольких чекбоксах желательно создавать на их основе битовую маску и проверять по ней.


 
sniknik ©   (2013-01-21 10:18) [7]

насколько понял "логику"..., ИМХО, в таком виде лучше
procedure TU_Test2.OKBtnClick(Sender: TObject);

 function BallInc(ChBox1, ChBox2, ChBox3, ChBox4, ChBox5: TCheckBox): integer;
 begin
   if (not ChBox1.Checked) and ChBox2.Checked and (not ChBox3.Checked) and ChBox4.Checked and ChBox5.Checked
     then result:= 1
     else result:= 0;
 end;

begin
 Ball2:= BallInc(checkbox1,  checkbox2,  checkbox3,  checkbox4,  checkbox5) +
           BallInc(checkbox6,  checkbox7,  checkbox8,  checkbox9,  checkbox10) +
           BallInc(checkbox11, checkbox12, checkbox13, checkbox14, checkbox15) +
           BallInc(checkbox16, checkbox17, checkbox16, checkbox19, checkbox20) +
           BallInc(checkbox21, checkbox22, checkbox23, checkbox24, checkbox25);
 Label7.Caption:="Ball2="+inttostr(Ball2);
end;


 
clickmaker ©   (2013-01-21 10:38) [8]

массив из чекбоксов + проверка в цикле


 
MonoLife ©   (2013-01-21 10:40) [9]

я опечатался, хотел в 1посте написать Ball2:=1. Но это тоже неправильно.
У TC в конце процедуры Ball2 может равняться 5, если все условия верны, ведь чекбоксы не повторяются, а else там не видно.


 
O'ShinW ©   (2013-01-21 11:06) [10]

маска это хорошо, но думаю, тут не до этого пока :)

для тестов можно написать
 public     { Public declarations }
   function GetDisplayVal(ACB: array of TCheckBox): string;
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}

function TForm1.GetDisplayVal(ACB: array of TCheckBox): string;
var
 i: integer;
begin
 Result := "";
 for i := Low(ACB) to High(ACB) do
   if ACB[i].Checked
      then Result := Result + "T"
      else Result := Result + "F";
end;

и юзать (проверить)

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 s := GetDisplayVal([checkbox2, checkbox4, checkbox1, checkbox3, checkbox5 ]);

showmessage(s);
if s = "TTFFT" then
   ....;
end;


 
QAZ10   (2013-01-21 11:06) [11]

сейчас новая мода чтоли пошла, тесты писать?


 
brother ©   (2013-01-21 11:46) [12]

она и никогда не пропадала)


 
QAZ10   (2013-01-21 12:00) [13]


> brother ©   (21.01.13 11:46) [12]

да ладно, щас куда не зайди полюбому комуто дали задание тест написать, раньше такого небыло


 
clickmaker ©   (2013-01-21 12:03) [14]

тлетворное влияние ЕГЭ


 
O'ShinW ©   (2013-01-21 12:09) [15]

хоть и каждый может написать что угодно, но 1951 гр
наверное, самостоятельно что-то решил изучить на пенсии
похвально, чё..


 
имя   (2013-04-02 13:04) [16]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2014.02.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
2-1365497297
И. Павел
2013-04-09 12:48
2014.02.09
NTLM-аутентификация


1-1321596096
brother
2011-11-18 10:01
2014.02.09
TIniStream реальность?


2-1365664373
Jord
2013-04-11 11:12
2014.02.09
sql replace странно работает


1-1321910834
Mr.Devil
2011-11-22 01:27
2014.02.09
Ошибка при инициализации приложения (0xc0000005)


11-1249461142
Jon
2009-08-05 12:32
2014.02.09
OnClick Perform Message