-
У меня имеется 10 картинок jpg. Как сделать чтобы при нажатии на кнопку в Image загружалась случайная картинка из папки, но чтобы они не повторялись (пока я не нажму 10 раз кнопку).
-
Считать клики и запоминать уже загружавшиеся картитнки
-
var
nums: array [0..9] of Integer;
i, j, r: Integer;
begin
Randomize;
for i := 0 to 9 do
nums[i] := i;
for i := 0 to 9 do begin
r := Random(10-i);
showmessage(inttostr(nums[r])+'.jpg');
for j := r to 10-i-2 do
nums[j] := nums[j+1];
end;
end;
-
Thank's
-
А как же негласное правило "код сразу не давать"? :)
-
> [4] Denis_ © (29.09.07 16:11)
А код, что я дал и не делает то, что описано в [0]. Он позволяет лишь разобраться в алгоритме получения неповторяющихся чисел.
Вот если бы потом последовал вопрос, как сделать то-же самое по нажатию кнопки, другой разговор.
-
> homm © (29.09.07 21:19) [5]
А потом ещё и вопрос "А как это связано с картиками?", да?:)
-
можно назвать картинки от нуля до десяти. После I:=Random(9); потом form1.image1.picture:='c:\'+i;
-
> [7] No_ise (19.10.07 16:02)
Типа повторятся они не будут? :)))
LOl.
-
Ладно, вообщем есть другое решение данной ситуации!
Можно использовать динамический массив(можно список{TList})
1.Занести туда все имена файлов(Или непосредственно картинки).
2.Загрузить картинку и удалить этот элемент массива(Теперь будем выбирать из остальных).
3.Как только Count=0 Загружаем Всё обратно(к п.1)
Типа того///
-
> Ладно, вообщем есть другое решение данной ситуации!
здорово. зачем нам молоток ? мы лучше микроскопом гвоздь забъём )
-
> Типа повторятся они не будут? :)))
будут для этого выше написан код для не повторений
-
Я понимаю, шо мой вариант громоздкий, использует слишком много ресурсов и тд,
но его не только для данной ситуации можно юзать...(Например, кол-во картинок не известно или это другие элементы ...)
-
Про random уже сказали :-) Ещё стоит добавить randomize и TStringList, у которoго требуются методы Assign, Delete и свойство Count...
-
Можно генератор псевдослучайных чисел заюзать. Там тоже не повторяюца. Правда порядок следования будет всегда один и тот же, если с параметрами не замутить чего-нить. Давно дело было, деталей не помню уже :)
-
Можно ещё массив перемешать - как в плейлистах плейеров.
(пробежать один или более раз по массиву, перемешивая рандомно элементы)