Код:
procedure TForm1.Timer1Timer(Sender: TObject); //действие по таймеру
var
mark,endofupr:boolean;
i,x,l,m,n1:integer;
mas: array of integer;
begin
i:=0;
SetLength(mas, Listbox1.Items.Count);
for i:=0 to Listbox1.Items.Count do
mas[i]:=999; //забил весь массив такими элементами, они точно не встретятся, а их будет нужно сравнивать
endofupr:=true;
mark:=true;
Timer1.enabled := false; //выключаем таймер
if checkbox1.Checked=true then //если выводить рандомно
begin
Randomize;
k:=Random(Listbox1.Items.Count);//выбираем число между количеством строк
if checkbox2.Checked = true then //если без повторений
begin
if j>0 then //первый случай мы уже учли внизу
while mark=true do
begin
mark:=false;
k:=Random(Listbox1.Items.Count);
for i:=0 to length(mas)-1 do
if k=mas[i] then mark:=true;
end;
mas[j]:=k;
j:=j+1;
if j=Listbox1.Items.Count then
begin
showmessage('last exercise for today');
endofupr:=false;
end;
end;
edit3.Text:=edit3.Text+'['+inttostr(mas[j])+']'; //это всякая фигня для проверки.
//и вот эти мас[i] почему-то по выводу равны [999], хотя им нужно присвоить номера строк. почему не присваиваются -не понимаю
edit3.Text:=edit3.Text+inttostr(k);
//edit3.Text:=edit3.Text+'('+inttostr(j)+')';
upr:= ListBox1.Items[k];
end
else //если не рандомные и тд
Так, я, пожалуй, ошибся, вывесив только часть кода. так, думаю, будет проще понять что и как. а то тут вы говорите про лишние энды, и мало ли где я еще напутал при редактироваании. а это ж к делу не относится.
собственно выводом по таймеру управляют два чекбокса: один из них отевчает за случайный вывод. а второй за вывод с/без повторениями.
как уже говорил, у меня проблема с рандомом без повторений.
сейчас попробую сделать массив не чисел с номерами строк, а просто со строками, и выводить напрямую из него. ну, мало ли.
и да, я не понял почему upr:=... перенести вверх
если вы о том, что это присваивание и вывод должны быть в цикле, то нет. это единичное действие по таймеру, а этиот таймер будет включаться не раз, так что вот как раз в каждое включение нужно вывести один, не повторяющийся, элемент
то есть конкретно в этой процедуре выводится одна строка, просто она(процедура) выполняется несколько раз.ну и эти строки, повторяюсь, не должны, гхм, пардон за такое построение предложения, повторяться.