Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.08.25;
Скачать: CL | DM;

Вниз

уникальное имя файла   Найти похожие ветки 

 
Phoenix7   (2012-12-17 11:25) [0]

Нужно быстро генерировать уникальные имена для сохраняемых файлов (jpg) в рамках определенной папки. Как это лучше сделать? Цикл с FileExists не пойдет.


 
brother ©   (2012-12-17 11:30) [1]

randomize;
name:="";
for i=0 to 20 do
 name:= name + chr(random(26)+65);


 
RWolf ©   (2012-12-17 11:33) [2]

GetTempFileName, как вариант.


 
Phoenix7   (2012-12-17 11:35) [3]


> brother ©


не то, в папке X есть файлы 1.jpg, 2.jpg, ..., 9.jpg. Я сохраняю файл, он должен сохраниться с уникальныным именем, в данном случае - 10.jpg


 
O'ShinW ©   (2012-12-17 11:36) [4]

var
 G: TGUID;
begin
 CreateGUID(G);
 ShowMessage( GUIDToString(G) );


 
O'ShinW ©   (2012-12-17 11:43) [5]

ShowMessage( FormatDateTime("YYYYMMDDhhmmss-", now) + inttostr(GetTickCount) );


 
O'ShinW ©   (2012-12-17 11:58) [6]


> папке X есть файлы 1.jpg, 2.jpg, ..., 9.jpg. Я сохраняю
> файл, он должен сохраниться с уникальныным именем, в данном
> случае - 10.jpg

хорошо
пусть есть супер быстрая процедура, сообщающая следующее имя
1. Спрашиваем у нее имя.
2. Пишем под этим именем.

Что будет если в момент времени 1.5 между этими событиями процедуру запросили еще раз(другой поток / другой юзер)

1. она вернула тоже имя, что и до этого. -> Кто-то будет перезатёрт.
2. она вернула "следующее". Но кто-то отказался от записи, имя не используется. ->  Образовалась брешь в нумерации. Какая разница как нумеровать?

-------
Программу юзает один человек, потоков нет.
Тут, думаю, нужен класс-записывальщик.
Один раз он вычисляет через FileExists последний номер файла, и раздаёт при каждом обращении следующее. Если кто-то отказался писать(а писать только через него можно, поэтому он знает что отказались) - имя может быть выдано еще раз.


 
brother ©   (2012-12-17 12:33) [7]

> не то,

тогда пиши то, ты в [0] ничего не уточнял...


 
Ega23 ©   (2012-12-17 13:24) [8]

CoCreateGUID


 
O'ShinW ©   (2012-12-17 14:12) [9]

function CreateGUID(out Guid: TGUID): HResult;
begin
 Result := CoCreateGuid(Guid);
end;


 
Игорь Шевченко ©   (2012-12-17 17:39) [10]

Ega23 ©   (17.12.12 13:24) [8]
O"ShinW ©   (17.12.12 14:12) [9]

http://www.rsdn.ru/article/mag/200301/GUIDEcology.xml

Гореть вам в аду


 
Inovet ©   (2012-12-17 18:38) [11]

> [10] Игорь Шевченко ©   (17.12.12 17:39)
> Гореть вам в аду

Ничего, по просьбе автора статьи в МС одумаются и введут функцию возврата GUID.


 
O'ShinW ©   (2012-12-18 09:32) [12]

CoDeCreateGuid(Guid)? :)

Боюсь, это не осуществимо. Вряд ли  где то запоминаются хоть какие-то гайды.


 
DVM ©   (2012-12-18 10:08) [13]


> Игорь Шевченко ©   (17.12.12 17:39) [10]

Платные GUID это интересная идея.


 
Ega23 ©   (2012-12-18 13:34) [14]


> Платные GUID это интересная идея.

Так уже же... В MSDN есть


 
Anatoly Podgoretsky ©   (2012-12-18 15:08) [15]

> DVM  (18.12.2012 10:08:13)  [13]

За деньги что угодно.


 
брат Птибурдукова   (2012-12-18 17:38) [16]


> DVM ©   (18.12.12 10:08) [13]
Аукцион на "золотые номера" типа АААААААА-...



Страницы: 1 вся ветка

Текущий архив: 2013.08.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1363663611
Йети
2013-03-19 07:26
2013.08.25
где скачать BDE?


2-1355296974
Вася
2012-12-12 11:22
2013.08.25
ШИМ из LPT порта


2-1355580331
SolleN
2012-12-15 18:05
2013.08.25
Импорт данных из excel в delphi


15-1363811403
Юрий
2013-03-21 00:30
2013.08.25
С днем рождения ! 21 марта 2013 четверг


2-1355679968
SKIPtr
2012-12-16 21:46
2013.08.25
Как расположить панели по порядку