![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем привет.
Подскажите плз. как сделать генератор случайных символов. мне надо так что бы в едит генерировались символы от A до Z и что бы генерировалось количество символов. Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#2
|
||||
|
||||
![]() Функция Random выдает случайное число. А что такое символ? Это число. Символ задается его кодом. Следовательно:
Код:
Randomize; Edit1.Text:=''; count:=Random(N); // Сюда макс количество for i:=0 to count do Edit1.Text:=Edit1.Text+chr(Random(ord('Z')-ord('A')+1)+ord('A')) jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
scroyler (01.03.2012)
|
#3
|
|||
|
|||
![]() спасибо. а как с генерировать в виде slovo1234 , а то есть и цифры и буквы?
Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#4
|
|||
|
|||
![]() либо брать коды символов с '0' до '9' (это коды 48-57), либо можно сделать специальный Mas: array[43] of char = ['a'..'z', '0'..'9'] и брать значения из него. то есть берем букву вот так - Mas[random(36)] (36 - это 26 латинских букв плюс 10 цифр)
Я, правда, не уверен, что паскаль правильно подхватит такое объявление. Если не получится, то придется объявлять посимвольно 'a', 'b', 'c'... и так далее. В итоге должно получится что-то вроде Код:
var Mas: array[36] of char = ['a'..'z', '0'..'9']; procedure Button1Click(Sender: TObject); begin Randomize; Edit1.Text:=''; count:=Random(N); // Сюда макс количество for i:=0 to count do Edit1.Text:=Edit1.Text + Mas[random(36)]; end; Писал с работы, могут быть описки -_- Но в общем алгоритм, думаю, понятен. Вообще, на будущее. Есть уже готовые ansi-таблицы, из которых можно брать символы - например, вот для win-1251 кодировки. Последний раз редактировалось nixel, 01.03.2012 в 11:04. |
#5
|
||||
|
||||
![]() Генератор паролей делаем? Так там еще регистр символов надо учитывать.
Вот вам генератор - развлекайтесь: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var PassLen, i: Integer; Complexity: record Digit,Alpha,Registr: Boolean end; CharSet, Pass: String; begin Complexity.Digit := CheckBox1.Checked; Complexity.Alpha := CheckBox2.Checked; Complexity.Registr := CheckBox3.Checked; CharSet := ''; if Complexity.Digit then CharSet := CharSet + '012345679'; if Complexity.Alpha then CharSet := CharSet + 'qwertyuiopasdfghjklzxcvbnm'; if Complexity.Registr then CharSet := CharSet + 'QWERTYUIOPASDFGHJKLZXCVBNM'; if CharSet = '' then Exit; PassLen := 10; SetLength(Pass, PassLen); for i := 1 to PassLen do Pass[i] := CharSet[Random(Length(CharSet))+1]; Memo1.Lines.Add(Pass); end; end. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
![]() Мда, логичнее использовать строки, чем массив символов. Как-то я сразу об этом не подумал
![]() |
#7
|
||||
|
||||
![]() Код:
function CreateBoundary(ALength: Integer): String; begin Result:='--------'; while Length(Result)<ALength do begin Result:=Result+Chr(Random(Ord('z')-Ord('a'))+Ord('a')); Result:=Result+Chr(Random(Ord('9')-Ord('0'))+Ord('0')); Result:=Result+Chr(Random(Ord('Z')-Ord('A'))+Ord('A')); Result:=Result+Chr(Random(Ord('9')-Ord('0'))+Ord('0')); end; end; Код:
Edit1.Text:=CreateBoundary(32); Пишу программы за еду. __________________ |