ЖУРНАЛ "Территория Delphi". Выпуск №1, 2008 г.
О журнале
•  Главная
•  Авторы
•  Полезные ссылки
Delphi
•  Новичкам. Моя первая программа :)
•  Новичкам. Функция random
•  Ping. Общее понятие и реализация редствами Delphi
•  Пишем ICQ бота
•  Работа с большим количеством подключений. TServerSocket
•  Состояние системы питания компьютера
Сайтостроительство
•  SMF - XML стандарт в модификациях

Копирование материалов журнала без размещения ссылки-источника запрещено!

Новичкам. Функция random

 

Так, с чего бы начать?
Начинать всегда сложно но все же когдато нужно.
В этом небольшом "тексте" я хочу рассказать Вам как с помощью Делфи вывести текст рандомом.Для тех кто не знает что такое рандом, обьясняю. Это слово в переводе с анг. означает - "случайный", "произвольный". Если не верите, можете сами перевести в любом переводчике:) НУ это я так, шучу, давайте ближе к теме. В делфи есть такая функция random(тут можно указать диапазон значений), например - random(255). Таким образом функция будет возвращать случайное число в диапазоне от 0 до 255.

Сегодня Мы напишем прогу, которая будет выводить не случайные цыфры, а целые наборы символов, тоесть и цыфры и буквы.

Запусти дядю Бормана, сразу сохрани проект в свою папку, чтобы потом мог легко его найти.
На форму кинь 3 TEdit, 3 TLabel, 2 TButton, и 3 TTimer. Таймеры возьми из закладки System, а остальной с закладки Standard.

Размести поудобнее компоненты - допустим, лейбл поставь над каждым эдитом, ну сам смотри как удобнее.

Щас займемся кодингом. Код будет маленький, потому как я сам большой писать пока не умею, поэтому сойдет для начала какой есть.

Как я уже говорил, размести поудобней компоненты.
На первуйю кнопку назови - Пуск, вторую - Стоп.
Да, самое главное забыл.
Переместись в редактор кода, там найди слово Var, ну вобщем такой текст:
var
  Form1: TForm1;


выше него напиши:
const
  mas: string  = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890');

Это мы добавили константу типа string(строковую) с именем -"mas".

По собитии кнопик "Пуск" onClick напиши

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Timer2.Enabled:=true;
Timer3.Enabled:=true;
Button1.Enabled:=false;
Button2.Enabled:=true;
end;


Для кнопки "Стоп" этот код:

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
Timer3.Enabled:=false;
Button1.Enabled:=true;
Button2.Enabled:=false;
end;


Тоесть кнопки нам нужны для того, чтобы отключать таймеры.

Вот код для собития onTimer всех таймеров:
Для первого:

Label1.Caption:=(mas[random(36)]);
if Label1.Caption = Edit1.Text then
Timer1.Enabled:=false;


Для второго:
 Label2.Caption:=(mas[random(36)]);
 if Label2.Caption = Edit2.Text then
 Timer2.Enabled:=false;


И для третьего:

Label3.Caption:=(mas[random(36)]);
if Label3.Caption = Edit3.Text then
Timer3.Enabled:=false;


Помоему все, ниче не забыли.
Щас наверно нужно обьяснить весь этот бессмысленный код...
Итак по порядку.
//Присваиваем первому лейблу случайный текст,
//текст может быть случайный символ, из обьявленной нами константы //mas
//Да, мы же договорились говорить сегодня о функции random();
Так вот, эта функция выбирает случайный символ из 36, потомучто у нас в нашей константе mas обьявлено в скобках 36 символов.
Если Вы захотите добавить еще и другие символы, типа - !"№, то просто добавьте их в любое место среди других, уже указанный мною сомволов, только тогда нужно будет указывать не mas[random(36)], а то количество которое вы указали сами, ну допустим было 36, а Вы добывили еще 10, значит будет 46, и тд.
Label1.Caption:=(mas[random(36)]);

// Если Кепшн лейбла(его текст, заголовок вобщем) = тексту //введенному в эдит1 то...

if Label1.Caption = Edit1.Text then

//выключаем Таймер1, таким образом прекращается перебор символов

Timer1.Enabled:=false;


ну и так далее по аналогии.
Конечно это не самый удачный алгоритм, но для начала хватит для понимания как рботают компоненты, и понять вобще как работает перебор символов.
Вот атким нехитрым способом осуществляется подбор паролей к разным прогрмам, ну там конечно все намного сложнее.
Я показал Вам только общий види этого.

Сами можете побробовать сделать строку, чтобы в нее выводились случайные символы из нашей константы, длиннну можете ввзять любюю, например.

Label1.Caption:=mas[random(36)]+mas[random(36)]

таким образом мы получим Лайбл из двух случайных символов.
Попробуйте проделать это сами, поэксперементирую с количеством выходный параметров.

 

С уважением, Амельченко Сергей (Сёга) !

Бесплатный хостинг от EOMY.NET