Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Случайные имена, Как сгенерировать случайное имя? 
:(
    Опции темы
Nightwish
Дата 1.3.2004, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.3.2004

Репутация: нет
Всего: нет



Здравствуйте.

Как сгенерировать случайное имя файла?
Нужно сохранить множество файлов, под разными именами и чтобы имя файла генерировалось самостоятельно без повторов.
PM MAIL   Вверх
Bodya
Дата 1.3.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.6.2003

Репутация: нет
Всего: нет



Создавай имена файлов с цифрами. Например Temp001, Temp002 и т.д.
PM MAIL   Вверх
Maverick
Дата 1.3.2004, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



А еще лучше использовать точное время создания файла....
Тогда повторов точно не будет.... В зависимости от времени создания, используй и миллисекунды, секунды, часы....

У меня была такая проблема... с нескольких компов на сервер сбрасывались файлы... Постоянно, надо чтоб имена ни в коем случае не повторялись... Но специфика в том, что один комп не мог бы сбросить файл быстрее чем за секунду....Поэтому принцип был такой <имя файла>=<постоянная часть>+<ID компа>+<Дата (для удобства перевел в String без точек)>+<Количество секунд после полуночи>.... ну это кому как удобно.... примерно так....


--------------------
smile
PM ICQ GTalk   Вверх
Pakshin A. S.
Дата 2.3.2004, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Код

function GetName(const LengthN:integer):string;
var
  i:integer;
begin
 Randomize;
 Result:='';  
 for i:=1 to LengthN do
   Result:=Result + chr(Random(26) - 96)
end;


Идея такова... biggrin.gif
PM   Вверх
x77
Дата 2.3.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Pakshin A. S., хорошая идея. и чему будет равен Chr (-96)?

у тебя всегда будет формироваться пустая строка.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 2.3.2004, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Имелся ввиду плюсик, ошибся, простите biggrin.gif Да ещё, наверное, и 97 нужно...

Мозги сегодня не работают...
PM   Вверх
Pakshin A. S.
Дата 2.3.2004, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Сунул, получил пробелbiggrin.gif
PM   Вверх
x77
Дата 2.3.2004, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



самый нормальный вариант предложил Maverick smile.gif а у тебя возможны, хотя и маловероятны, повторы. есть ещё один "железобетонный" вариант. можно вызывать CreateClassId, т.е. получать идентификатор GUID, который якобы уникален во вселенный (по крайней мере, COM-технология только на этом и держится).

Код

uses
 ComObj;

...

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 s := CreateClassId; // получаем GUID
 s := StringReplace (Copy (s, 2, Length (s) - 2), '-', '', [rfReplaceAll]); // убираем "{", "}" и "-"
 ShowMessage (s);
end;



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
<Spawn>
Дата 3.3.2004, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Цитата(x77 @ 2.3.2004, 15:05)
самый нормальный вариант предложил Maverick smile.gif а у тебя возможны, хотя и маловероятны, повторы. есть ещё один "железобетонный" вариант. можно вызывать CreateClassId, т.е. получать идентификатор GUID, который якобы уникален во вселенный
[/CODE]

Ну не совсем уникальный smile.gif Если книга не врет и я правильно помню, то если генерить 100 000(или милион) GUID-ов в секунду, то за время существования вселенной, вероятность составляет 5%, что оно повторится


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
NiJazz
Дата 3.3.2004, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Лучше нумеровать файлы с одним именем. Правильно заметил Bodya.
PM MAIL   Вверх
x77
Дата 3.3.2004, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



<Spawn>, думаю, по условию задачи, можно этими процентами смело пренебречь smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.