Главная страница
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.02 c
14-43780
Cerber
2004-02-18 16:39
2004.03.14
Работа в инте


1-43484
Lisa
2004-02-28 16:25
2004.03.14
печать из TStringGrid a


1-43653
Powerland Software
2004-03-01 20:38
2004.03.14
Memory


3-43334
pashtet
2004-02-14 19:09
2004.03.14
ADO и русские буквы!


7-43901
kostyan
2003-12-24 09:17
2004.03.14
Принтер