Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Bitmap в Image   Найти похожие ветки 

 
Rim   (2004-02-29 14:50) [0]

Нужна помощь.В ресурсном файле в Bitmap 10 картинок.На форме 5 Image.Загружаю из Bitmap в Image методом случайных чисел.Как сделать чобы изображения в Image не повторялись?


 
Mihey ©   (2004-02-29 15:00) [1]

Функция заполнения массива случайными неповторяющимися числами:

procedure FillArray(var A: array of Integer);
var

I, S, R: Integer;
begin

for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

Заполняешь массив длиной в 10 элементов (SetLength(a, 10)), загружаешь первые пять.


 
Maxud ©   (2004-02-29 15:18) [2]


> Rim (29.02.04 14:50)

Создавай сразу весь массив случайных чисел, потом бери из массива, допустим, первое значение и удаляй его из массива (или помечай как использованное). Если все использовал, поторяй операцию заново.


 
Rim   (2004-02-29 15:47) [3]

Я начинающий. Объясните как это применить, если можно попонятней.


 
Maxud ©   (2004-02-29 16:15) [4]

Вот, на коленке:
const
N = 10;
ResArray: array[0..N-1] of ShortString = (
"","","","","","","","","","");// в кавычках имена ресурсов

var IndexArray: array of integer;
...
function FillIndexArray(Count: integer);// заполняем массив
var i, r, t: integer;
begin
SetLength(IndexArray, Count-1);
for i := 0 to Count-1 do
IndexArray[i]:= i; // начальная инициализация
for i := 0 to Count-1 do // смешиваем
begin
r := Random(Count);
t := IndexArray[r];
IndexArray[r] := IndexArray[i];
IndexArray[i] := t;
end;
end;

function GetNextName: string;
begin
Result := ResArray[IndexArray[0]];
if Length(IndexArray)>1 then
Move(IndexArray[1], IndexArray[0], (Length(IndexArray)-1) * SizeOf(Integer))
else
FillIndexArray(N);
end;

// где-нибудь в OnCreate пропиши
// вызовы Randomize и FillIndexArray(N)


 
Maxud ©   (2004-02-29 16:15) [5]

Вот, на коленке:
const
N = 10;
ResArray: array[0..N-1] of ShortString = (
"","","","","","","","","","");// в кавычках имена ресурсов

var IndexArray: array of integer;
...
function FillIndexArray(Count: integer);// заполняем массив
var i, r, t: integer;
begin
SetLength(IndexArray, Count-1);
for i := 0 to Count-1 do
IndexArray[i]:= i; // начальная инициализация
for i := 0 to Count-1 do // смешиваем
begin
r := Random(Count);
t := IndexArray[r];
IndexArray[r] := IndexArray[i];
IndexArray[i] := t;
end;
end;

function GetNextName: string;
begin
Result := ResArray[IndexArray[0]];
if Length(IndexArray)>1 then
Move(IndexArray[1], IndexArray[0], (Length(IndexArray)-1) * SizeOf(Integer))
else
FillIndexArray(N);
end;

// где-нибудь в OnCreate пропиши
// вызовы Randomize и FillIndexArray(N)


 
Maxud ©   (2004-02-29 16:18) [6]

Блин, когда кнопка "Удалить сообщение" появится? Нафлудил тут :(



Страницы: 1 вся ветка

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-43261
ИМХО
2004-02-13 03:31
2004.03.14
Пару слов о MS Access


1-43658
an-na2002
2004-03-02 03:00
2004.03.14
Работа с файлами


3-43282
NorthMan
2004-02-12 16:02
2004.03.14
В чем дело, почему BDE выдает ошибку


14-43780
Cerber
2004-02-18 16:39
2004.03.14
Работа в инте


4-43957
rimd
2004-01-05 14:37
2004.03.14
CreateThread