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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 16:53   #1
killbond
 
Регистрация: 14.06.2010
Сообщений: 7
По умолчанию Как получить рандомный символ из строки TEdit?

Имею такую вот наработку:
Код:
function SpeakAblePassWord: string;
var 
   charset : array [0..6] of string;
begin
// ...
   charset[6]:=Form1.Edit2.Text; 
// ...
Result := ''; 
// ...
Result := Result + charset[6][random(Length(charset[6]))+1]; 
// ...
end;
Хочу получить рандомный символ из строки Form1.Edit2.Text но не выходит, а именно: запускаю программу (компилируется без ошибок) выполняю управляющее действие, и программа просто виснет. Помогите исправить? На всякий случай приложу полные исходники.
Вложения
Тип файла: rar Stuff.rar (9.5 Кб, 13 просмотров)

Последний раз редактировалось killbond; 14.06.2010 в 16:56.
killbond вне форума Ответить с цитированием
Старый 14.06.2010, 17:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте так:
Код:
var 
   charset : array [0..6] of string;
   ss : string; 
begin
// ...
   charset[6]:=Form1.Edit2.Text; 
// ...
  Result := '';
  ss := ''; 
// ...
  if Length(charset[6])>0 then
     Result := ss + charset[6][random(Length(charset[6]))+1]; 
// ...
end;
p.s. а зачем Result := Result + ... если чуть выше в Result занесли пустую строку?!

внимательнее надо быть!!
Красным выделил место, где у вас были ошибки (теперь это уже исправленный код)!

и я бы не давал включить CheckBox7, пока текст с набором своих символом пуст.

Код:
  case random(7) of
  0:  if Form1.CheckBox1.Checked then
      Result := Result + charset[0][random(25)+1];
  1:  if Form1.CheckBox2.Checked then
      Result := Result + charset[1][random(25)+1];
  2:  if Form1.CheckBox4.Checked then
      Result := Result + charset[3][random(33)+1];
  3:  if Form1.CheckBox3.Checked then
      Result := Result + charset[2][random(33)+1];
  4:  if Form1.CheckBox5.Checked then
      Result := Result + charset[4][random(10)+1];
  5:  if Form1.CheckBox6.Checked then
      Result := Result + charset[5][random(30)+1];
  6:  if Form1.CheckBox7.Checked then
      Result := Result + charset[6][Random(Length(charset[6]))+1];

Последний раз редактировалось Stilet; 26.07.2010 в 10:15.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2010, 02:23   #3
killbond
 
Регистрация: 14.06.2010
Сообщений: 7
По умолчанию

Я столько бился над этой ошибкой, переделывал на тот и этот лад, подумывал даже, что Delphi такой... а проблема оказалась лишь в том, что я когда копипастил, торопился и просто пропустил то место, где нужно 7-ой чекбокс вставить.

Serge_Bliznykov, премного благодарен.
killbond вне форума Ответить с цитированием
Старый 15.06.2010, 02:41   #4
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Только в начале кода врубите генератор случайных чисел Randomize.
baster128 вне форума Ответить с цитированием
Старый 15.06.2010, 07:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от baster128
Только в начале кода врубите генератор случайных чисел Randomize.
у него в коде это есть...

Кстати, killbond, я бы рекомендовал Вам вынести Randomize куда-нибудь повыше. Вообще, его достаточно вызвать один раз. Можно на событие создание формы его повесить (Form.. onCreate)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.07.2010, 19:49   #6
ChEaTeR-abc
Заблокирован
 
Регистрация: 30.06.2010
Сообщений: 104
По умолчанию

Знаю, что опоздал немного, но тут пытали и через case сделать и другими способами.К чему столько кода?Вот это поцепить на кнопку и всё готово:
Код:
Randomize;
  Label1.Caption:=Edit1.Text[Random(length(Edit1.Text))+1];
ChEaTeR-abc вне форума Ответить с цитированием
Старый 23.07.2010, 20:24   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ChEaTeR-abc, Вы не разобрались в теме.
case там совсем для другого...
Если интересно, посмотрите проект от TC
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в текстовом файле распознать символ перевода строки? mzelenyy Общие вопросы C/C++ 4 12.06.2010 11:30
Как получить текущий символ в консоли hard-t Общие вопросы C/C++ 0 20.12.2009 14:53
Как получить символ?(Delphi) The_Darkness Помощь студентам 3 18.07.2008 08:36
Как пререместить мигающую палочку в конец строки TEdit ? Protsv Общие вопросы Delphi 2 07.04.2008 08:43
как присвоить char'у символ перевода строки? Retiz Помощь студентам 6 06.04.2008 00:05