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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 13:20   #1
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию Не работает функция

Написал и не работает чето - возвращает пустоту. Подскажите что не так:
Код:
function TForm1.pass(count:integer) : string;
var s,ss,sss,a:string;
begin
 i:=0;
 a:='';
 s:='QWERTYUIOPASDFGHJKLZXCVBNM';
 ss:='qwertyuiopasdfghjklzxcvbnm';
 sss:='1234567890';
 repeat
  a:=a+s[random(length(s))-1];
  a:=a+ss[random(length(ss))-1];
  a:=a+sss[random(length(sss))-1];
 until count=1;
 Result:=a;
end;
Все разобрался. После
repeat надо написать в след. строке randomize;

Последний раз редактировалось kakawkin; 28.05.2011 в 13:24.
kakawkin вне форума Ответить с цитированием
Старый 28.05.2011, 13:55   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Так поставь брекпоинт и посмотри что там происходит.

А это вообще выглядит забавным:

Код:
repeat
  a:=a+s[random(length(s))-1];
  a:=a+ss[random(length(ss))-1];
  a:=a+sss[random(length(sss))-1];
 until count=1;
Странно как он ещё не зациклился....
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 28.05.2011, 14:17   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
repeat надо написать в след. строке randomize;
не стоит, достаточно один раз в начале программы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.05.2011, 15:09   #4
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

я ступил просто.
При random(length(sss))-1 может попасться 0 и будет значение #0
Сделал вот так:
Код:
function TForm1.password : string;
var i:integer;s,ss,sss,a:string;
begin
 a:='';
 s:='QWERTYUIOPASDFGHJKLZXCVBNM';
 ss:='qwertyuiopasdfghjklzxcvbnm';
 i:=0;
 Randomize;
 repeat
  inc(i);
  a:=a+s[random(length(s))+1];
  a:=a+ss[random(length(ss))+1];
 until i=3;
 a:=a+inttostr(random(9)+1)+inttostr(random(9)+1);
 Result:=a;
end;
kakawkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает функция keybd_event Hintman Win Api 31 05.06.2011 14:16
Не работает функция artem611 Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2011 10:10
Не работает функция ReNameFile maloun Общие вопросы Delphi 2 10.01.2011 12:11
не работает функция Benderbej JavaScript, Ajax 2 30.08.2010 18:54
Не работает функция gets()!!! Ilya'91 Общие вопросы C/C++ 1 28.07.2008 23:16