Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Randomize и маски

Автор: Jill 29.03.2006 15:37

Подскажите, плз, как случайным образом сформировать запись с учетом ограничений (например, номер телефона, дату и т.д.)

Вот, собственно, и сабж

Автор: F.I.A.T. 29.03.2006 15:44

И в чем проблема? Не знаем, как генерировать 8 чисел (ну, или скольки значный там номер телефона?) в интервале 1 - 9?

С датами: сгенерировать номер месяца (1 - 12), и уже зная его - год (число в заданном интервале) и число даты (сначала - год, для того, чтобы определить его високосность). Где именно проблема?

Автор: Jill 29.03.2006 16:59

Проблема в выводе.

Допустим, сформировали эти самые 12 (именно12) чисел. Каким макаром их вывести в формате маски (напр 8-375-16-245632)?

Автор: мисс_граффити 29.03.2006 22:05

var S:string;
.....
S:='8'+random(900)+'-'+random(90); //получим что-то вроде 8-375-12
Edit1.Text:=S;

Автор: Malice 30.03.2006 0:55

Цитата(мисс_граффити @ 29.03.2006 18:05) *

S:='8'+random(900)+'-'+random(90); //получим что-то вроде 8-375-12


Неочень хорошо, т.к. random(900) может быть <3 знаков, так может и 8-1-0 получится.

Автор: klem4 30.03.2006 1:51

Можно вот так попробовать

   randomize;
ord(s[0]) := 255;
s[1] := '8';
for i := 2 to 12 do s[i] := chr(ord('0') + random(10));
insert('-', s, 2);
insert('-', s, 6);
insert('-', s, 10);
insert('-', s, 13);


Вроде номера мобильника.

Автор: мисс_граффити 30.03.2006 3:59

Цитата(Malice @ 29.03.2006 21:55) *

Неочень хорошо, т.к. random(900) может быть <3 знаков, так может и 8-1-0 получится.

хорошо. пусть это будет (random(800)+100).

только я в том варианте IntToStr забыла - а это необходимо.

Автор: Jill 30.03.2006 17:32

Всем спасибо. Разобралась smile.gif