Форум: "Начинающим";
Текущий архив: 2013.08.25;
Скачать: [xml.tar.bz2];
Внизуникальное имя файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c