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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 20:44   #1
-=M{a}LoY=-
Пользователь
 
Аватар для -=M{a}LoY=-
 
Регистрация: 17.11.2010
Сообщений: 15
Вопрос Вывод нужных цветов рандомом

Нужно в массив записать рандомом цвета ...
Пишу ...

Код:
for i:=1 to 4 do
n[i]:=random(clWhite, clRed, clBlue, clYellow, clGreen, clBlack, clLime, clAqua );
Мне пишет ...

"Unit1.pas(302): ')' expected but ',' found "
"Unit1.pas(315): ';' expected but 'IF' found"

Подскажите пожалуйста, как сделать правильно или что не так?
-=M{a}LoY=- вне форума Ответить с цитированием
Старый 17.11.2010, 21:04   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Код:
var
  Form1: TForm1;
  n:array [1..100] of Tcolor;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
randomize;
for i:=1 to 4 do begin
n[i]:=rgb(random(255),random(255),random(255));
end;
end;
или из нужного списка
Код:
var
  Form1: TForm1;
  n,co:array [1..100] of Tcolor;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
randomize;
co[1]:=clWhite;
co[2]:=clRed;
co[3]:=clBlue;
co[4]:=clYellow;
co[5]:=clGreen;
co[6]:=clBlack;
co[7]:=clLime;
co[8]:=clAqua;
for i:=1 to 4 do begin
n[i]:=co[random(4)];
end;
end;
Воображение важнее, чем знания. (Albert Einstein)

Последний раз редактировалось mihali4; 17.11.2010 в 21:12.
dmitriegorovih вне форума Ответить с цитированием
Старый 17.11.2010, 21:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

опишите массив цветов, как константу.
А потом через random получайте индекс в этом массиве
например,
Код:
const
  CountOfColor = 8;
  Colors : array[0..CountOfColor-1] of integer
             =(clWhite, clRed, clBlue, clYellow, clGreen, clBlack, clLime, clAqua );

procedure TForm1.Button1Click(Sender: TObject);
var n:array[1..4] of integer;
  i : integer;
begin
  Randomize;
  for i:=1 to 4 do
    n[i] := Random(CountOfColor);
....
end;
p.s. разумеется, тут нет защиты от повтора цвета, т.е. в массив n могут попасть одинаковые цвета...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2010, 17:53   #4
-=M{a}LoY=-
Пользователь
 
Аватар для -=M{a}LoY=-
 
Регистрация: 17.11.2010
Сообщений: 15
Радость

Спасибо большое ... заработало ...

Цитата:
p.s. разумеется, тут нет защиты от повтора цвета, т.е. в массив n могут попасть одинаковые цвета...
Если не тяжело не подскажите как сделать такую защиту ... ?

Последний раз редактировалось -=M{a}LoY=-; 19.11.2010 в 00:24.
-=M{a}LoY=- вне форума Ответить с цитированием
Старый 09.12.2010, 10:54   #5
Моторокер
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 42
По умолчанию

Заполнить второй массив случайными числами, отсортировать одновременно оба массива по данным второго массива. Теперь первый массив заполнен случайными цветами без повторов.
Моторокер вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рандомом С++ Lazio Помощь студентам 4 17.09.2010 23:45
заполнение матрицы рандомом Law1589 Общие вопросы C/C++ 5 17.11.2009 23:04
Сгенерировать рандомом последовательность, по заданной формуле, если 1ое число известно! Алексей_xXx Помощь студентам 2 24.05.2009 16:40
Загрузка текста в мемо рандомом Gracia Помощь студентам 2 11.11.2008 08:37