![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тест на Делфи [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;