Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.02.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
2-1365240597
Exceler
2013-04-06 13:29
2014.02.09
Импорт данных из Эксель


15-1377635403
Юрий
2013-08-28 00:30
2014.02.09
С днем рождения ! 28 августа 2013 среда


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


15-1377534392
картман
2013-08-26 20:26
2014.02.09
защита приложения


8-1234116983
Agent[007]
2009-02-08 21:16
2014.02.09
Лицензия





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский