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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2014, 14:27   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Hash в Delphi

Привет!

Чтобы сделать генерацию чисел достаточно использовать random и задать параметры диапазона, а как быть если нужно что то вроде этого? xDeqzK9DFB4FMCE7. Разумеется каждый раз уникальное.
bilibian вне форума Ответить с цитированием
Старый 25.02.2014, 14:40   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Составлять, например, строку нужной длины из случайно выбранных букв из заданного алфавита.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 14:47   #3
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Составлять, например, строку нужной длины из случайно выбранных букв из заданного алфавита.
Что то вроде этого?

Код:
function abc:string;
var arrabc:array [0..3] of string;
begin
for i:=0 to length(arrabc)-1 do
begin
 arrabc[i]:='A';
 arrabc[i]:='B';
 arrabc[i]:='C';
end;
result:=arrabc[random(3)]+arrabc[random(3)]+arrabc[random(3)];
end; 

showmessage(abc);
Я рассчитывал, что в дельфи есть готовое решение.
bilibian вне форума Ответить с цитированием
Старый 25.02.2014, 14:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

BDA, вполне себе приемлимое решение (особенно относительно упоминанания "random" для чисел ), только реальная уникальность при таком подходе не гарантируется.

bilibian, может быть, достаточно получать GUID (и, если надо, то брать хэш уже от него?)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2014, 14:56   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от bilibian Посмотреть сообщение
Что то вроде этого?
угу. почти. я бы такой вариант предложил:
Код:
function abc(N: integer):string;
const sAlpha = 'ABCDEFGHabcde';
var i, len:integer;
begin
  len := Length(sAlpha);
  result := '';
  for i:=1 to N do
    result := result + sAlpha[ random(len)+1 ];
end;


Код:
  Randomize;
  showmessage(abc(7));  {получить случайную строки длиной 7 символов}

Цитата:
Сообщение от bilibian Посмотреть сообщение
Я рассчитывал, что в дельфи есть готовое решение.

зачем. В том и прелесть, что Вы можете написать то, что Вам нужно и так, как Вам нужно!


p.s. всё таки подозреваю, что Вам совсем не случайная строка нужна!
Иначе, почему речь в заголовке темы идёт насчёт Hash ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2014, 15:06   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Serge_Bliznykov, именно из-за упоминания random не стал писать про неполную уникальность
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2014, 15:06   #7
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

md5 можете попробовать на крайняк.
Кольша вне форума Ответить с цитированием
Старый 25.02.2014, 15:14   #8
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Serge_Bliznykov, Ваш вариант мне понравился, более компактен. Спасибо.
bilibian вне форума Ответить с цитированием
Старый 25.02.2014, 17:15   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы GUID получал. Надежнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2014, 17:33   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Время в миллисекундах + рандом (строка из 16 случайных ASCII-символов) и md5 от того, что получилось. Вероятность неуникальности близка к абсолютному нулю.
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать MD5 Hash в String Shouldercannon Общие вопросы Delphi 3 06.07.2012 14:45
hash Вкотакте Кольша Свободное общение 4 21.04.2012 19:51
hash-функции, md-5 may17 Помощь студентам 1 03.04.2012 20:35
получить hash в контакте fate Работа с сетью в Delphi 3 06.06.2011 15:59
В С аналог hash в перл ? den68 Помощь студентам 3 05.10.2009 15:22