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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 20:49   #1
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию Генератор символов

Всем привет.
Подскажите плз. как сделать генератор случайных символов.
мне надо так что бы в едит генерировались символы от A до Z
и что бы генерировалось количество символов.
scroyler вне форума Ответить с цитированием
Старый 29.02.2012, 23:09   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Код:
Edit1.Text := '';
randomize;
for i := 1 to Count do
    Edit1.Text := Edit1.Text + chr(random(26)+65);
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 29.02.2012, 23:16   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

элементарно, Ватсон!

пусть, Вам нужно сгенерировать N символов.
тогда так
Код:
procedure TForm1.Button1Click(Sender: TObject);
const N = 5;
var i : integer;
 s : string;
begin
  Randomize;
  s := '';
  for i:=1 to N do
    s := s + chr ( random( ord('Z') - ord('A') + 1) + ord('A'));
  Edit1.Text := s;
end;
p.s. randomize лучше вызывать ОДИН раз при запуске программы, например, на событии создания формы onCreate:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

Hacker19_90, а Вы меня опередили! Браво!

Последний раз редактировалось Serge_Bliznykov; 29.02.2012 в 23:19.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.02.2012, 23:19   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Hacker19_90, Вы, хоть и опередили меня чуток, но зато допустили неточность! У Вас буква Z никогда не выпадет!
Это почему? ))
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 01.03.2012, 00:43   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
Это почему? ))
я ошибся. слишком быстро "прогнал" код в уме и ошибся...
исправил свой пост в ту же минут.
но вы слишком быстры: Вы успели увидеть моё неверное замечание..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.03.2012, 07:05   #6
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

спасибо. а как с генерировать в виде slovo1234 , а то есть и цифры и буквы?
scroyler вне форума Ответить с цитированием
Старый 01.03.2012, 09:08   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
спасибо. а как с генерировать в виде slovo1234 , а то есть и цифры и буквы?
ну попробуйте так
Код:
Edit1.Text := '';
randomize;
for i := 1 to Count do
begin
      ch := chr(random(43)+48);
      if ch in ['0'..'9', 'A'..'Z'] then Edit1.Text := Edit1.Text + ch;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 01.03.2012, 09:32   #8
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

а в var что писать?
scroyler вне форума Ответить с цитированием
Старый 01.03.2012, 09:32   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Hacker19_90, потенциально такой код может вернуть строку МЕНЬШЕЙ длины, чем Count (ну, если случайный генератор вернёт не букву и не цифру..)

я бы предложил такой универсальный способ (он легко расширяется на любые символы или, наоборот, можно исключить нежелательные!):
Код:
Const
   sLo = 'abcdefghijklmnopqrstuvwxyz';
   sUpper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   sDigit := '0123456789';
var
   sAll : string;
   s : string; {строка, в которую будем собирать результат}
begin
   ....
   sAll := sUpper + sDigit; {генерировать строку только из больших латинских букв и цифр}
   s := '';
   for i:=1 to Count  do
      s := s + sAll [Random( length(sAll))+1  ];
   Edit1.Text := s;
....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.03.2012, 09:41   #10
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

не пашет( нажимаю ничего не происходит + прога виснит
scroyler вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет числа комбинации символов 'ab' во входном потоке символов (Си) skrappy_kokko Помощь студентам 4 14.09.2011 23:10
Дана последовательность символов (строка). Группу символов, разделенную с одной или обеих сторон пробелам viper1941 Паскаль, Turbo Pascal, PascalABC.NET 1 14.04.2011 08:46
Генератор Kashim Паскаль, Turbo Pascal, PascalABC.NET 12 10.01.2011 21:42
Что делать, если количество символов в билдере не соответствует количеству символов в билде? BoT_T Общие вопросы Delphi 0 16.11.2010 10:42
верно ли, что среди символов данного текста есть n подряд идущих символов, Yuliya-Nik Помощь студентам 0 06.10.2010 23:44