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

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

Тест на Делфи [D7, XP]


ad1951 ©   (2013-01-21 04:28:00) 

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


  (2013-04-02 13:04:00) [1]

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


O'ShinW   (2013-01-21 12:09:00) [2]

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


clickmaker   (2013-01-21 12:03:00) [3]

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


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


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

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


brother   (2013-01-21 11:46:00) [5]

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


O'ShinW   (2013-01-21 11:06:00) [6]

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

для тестов можно написать
 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:00) [7]

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


MonoLife   (2013-01-21 10:40:00) [8]

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


clickmaker   (2013-01-21 10:38:00) [9]

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


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

насколько понял "логику"..., ИМХО, в таком виде лучше
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;


Dimka Maslov   (2013-01-21 10:05:00) [11]

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


brother   (2013-01-21 06:34:00) [12]

ps.
> if (checkbox2.Checked=true)

=
if (checkbox2.Checked)


brother   (2013-01-21 06:31:00) [13]

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


MBo   (2013-01-21 05:40:00) [14]

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


MonoLife   (2013-01-21 05:35:00) [15]

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


MonoLife   (2013-01-21 05:33:00) [16]

Ball2:=Ball2+1;


Наверх

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