Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2009, 22:02   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Случайное и неповторяющееся, выделение в ListBox1

Надо чтобы в ListBox1 выделялся случайный файл.
Anfall вне форума Ответить с цитированием
Старый 22.02.2009, 09:19   #2
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

Код:
Randomize;
if ListBox1.Items.Count > 0 then
ListBox1.ItemIdex := Random(ListBox1.Items.Count);
Armorer вне форума Ответить с цитированием
Старый 22.02.2009, 09:45   #3
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Вспомните игру "Чики брики пальчик выкинь". В ней через каждые 3 пальца нужно убирать 1 и при следующем счете его не учитывать.
В вашем случае можно задать случайно число шагов и перебирать все не задействованные элементы ListBox и от кол-ва шагов отнимать 1, когда шаги кончатся выделить тот элемент на котором остановились.

Первый вариант я реализовал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  steps,i: integer;
begin
  Randomize;
  steps:=random(100);//задаем кол-во шагов
  i:=-1;//начальное положение указателя на элемент listbox
  while steps>=0 do //перебор элементов
  begin
    i:=i+1;//увеличиваем указатель
    if i>ListBox1.Count-1 then i:=0;//проверяем выход за предел listbox
    //за метку того факта, что данный элемент уже выкинут я взял
    //звездочку на конце элемента listbox
    //и если там нет звездочки, то кол-во шагов уменьшаем на 1
    if ListBox1.Items[i][length(ListBox1.Items[i])]<>'*'then steps:=steps-1; 
  end;
  ListBox1.Items[i]:=ListBox1.Items[i]+'*';//выбрасываем найденый элемент 
end;
Если свободных элементов не останется, то программа зависнет. Поэтому нужно вести учет кол-ва выброшеных элементов.

Последний раз редактировалось Kostia; 22.02.2009 в 09:47.
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посчитать количество предложений и вывести случайное dymych Общие вопросы C/C++ 0 21.11.2008 14:28
Как генирируеться случайное число? Altera Общие вопросы Delphi 8 20.04.2008 18:20
Случайное число Altera Общие вопросы Delphi 4 05.02.2008 22:22
ListBox1 Rahim1993 Общие вопросы Delphi 1 02.01.2008 17:56
Как згенерировать случайное число SeRhy Помощь студентам 2 25.11.2007 20:27