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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2012, 21:13   #1
py6jlb
 
Регистрация: 16.01.2012
Сообщений: 8
По умолчанию генератор чисел и смена картинки

Доброго времни суток. Тема такая: хочу чтоб при нажатии на кнопку срабатывал генератор случайных чисел от 0 до 1, и в зависимости от получившегося результата в Timage менялся рисунок. помогите все это в кучу собрать, я по отдельности со всеми частями разобрался, а собрать кучу никак не получаеться. Заранее спасибо!
py6jlb вне форума Ответить с цитированием
Старый 29.01.2012, 21:19   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

покажите свои наработки, что вы собрали по отдельности, а мы соберем все до кучи уже и поясним.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 29.01.2012, 22:01   #3
py6jlb
 
Регистрация: 16.01.2012
Сообщений: 8
По умолчанию

Вот так запускаеться генератор который сохраняет в переменную число от 0 до 1, если я правильно все понял, дело в том что дельфи увлекался давно, и сейчас пытаюсь вспомнить....

procedure TMainForm.Button1Click(Sender: TObject);
var
B : Integer;
begin
randomize;
B :=random();
end;

вторая часть это выбор рисунка, нам надо сравнить значение B с единицей и если равно то в Timage будет один рисунок а если не равно 1 то другой, вот только все этопредставить в виде кода я не смог.
py6jlb вне форума Ответить с цитированием
Старый 29.01.2012, 23:46   #4
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

py6jlb

Думаю что как-то так:
Код:
procedure TMainForm.Button1Click(Sender: TObject);
var
B : Integer;
begin
randomize;// мне кажеться, что нужно вызывать его только раз, например в //OnCreate
B :=abs(random(1)); // по идее должно выдать или 0 или 1
if B=1 then Image1.picture.loadfromfile('pic_1.bmp')
else
Image1.Picture.LoadFromFile('pic_0.bmp');
end;
Delphi_ProGer вне форума Ответить с цитированием
Старый 30.01.2012, 10:24   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Учим матчасть!
Random+F1:
без аргумента создаёт число от 0 до 1 в виде дробного.
с аргументом в виде целого числа N создаёт случайное из диапазона 0..N-1

отсюда вывод - создание числа строго 0 или 1 надо производить командой
Код:
b := random(2);
Код для загрузки изображения от Delphi_ProGer можно упростить так:

Код:
Image1.Picture.LoadFromFile('pic_' + inttostr(b) + '.bmp');
естественно, что это будет работать при четкой нумерации файлов согласно коду.
phomm вне форума Ответить с цитированием
Старый 30.01.2012, 10:33   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
randomize;// мне кажеться, что нужно вызывать его только раз, например в //OnCreate
угу. вы абсолютно правы. Randomize надо убрать из процедуры Button1Clcik и поместить на любое другое событие, происходящее при загрузке приложения/формы. Например, на событие формы OnCreate.

Цитата:
Код:
B :=abs(random(1));
во-первых, это ошибка!, ваш код ВСЕГДА будет возвращать НОЛЬ. (читайте описание функции Random)
надо так: B:=random(2);

в во-вторых, а функция ABS() тут зачем?! Она здесь АБСОЛЮТНО не нужна!


Добавлено
phomm, угу. всё так. я не обновил открытую страничку, поэтому не увидел сразу Ваш ответ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.01.2012, 20:52   #7
py6jlb
 
Регистрация: 16.01.2012
Сообщений: 8
По умолчанию

Спасибо всем за ответы, вопрос такой, если убрать randomize из Button1Clcik и перенести в OnCreate, то он будет срабатывать всего однин раз, а мне нужно чтоб при каждом новом нажатии генератор запускался снова, как все это лучше реализовать?
py6jlb вне форума Ответить с цитированием
Старый 30.01.2012, 21:52   #8
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

phomm
py6jlb

Чем то ники, похожи, между собой :D

randomize, один раз вызывается, а потом уже можно много раз рандом делать.
VintProg вне форума Ответить с цитированием
Старый 31.01.2012, 23:39   #9
py6jlb
 
Регистрация: 16.01.2012
Сообщений: 8
По умолчанию

Может вопрос совсем глупый но как мне засунуть картинки которые я использую, в один эксешник с программой??? что то я ни как не разберусь....
py6jlb вне форума Ответить с цитированием
Старый 01.02.2012, 02:32   #10
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от py6jlb Посмотреть сообщение
Может вопрос совсем глупый но как мне засунуть картинки которые я использую, в один эксешник с программой??? что то я ни как не разберусь....
Ресурсы, imagelist(думаю, что плохой вариант), есть и другие способы(но я не знаю какие , пусть профи напишут, или кто знает).

А если картинки всего 2, то можно создать 2 имейджа, и в программе, зависимо от условия, изменять значение свойства Visible.
Delphi_ProGer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена картинки Pein95 HTML и CSS 1 15.08.2011 21:07
смена картинки Dimarik PHP 2 22.08.2010 08:01
Смена картинки при авторизации tyze Общие вопросы Delphi 3 30.06.2010 21:49
Смена картинки при наведении курсора Шсу HTML и CSS 1 26.10.2009 19:50