Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1266740974
leonidus
2010-02-21 11:29
2013.08.25
Определение разрядности программы


2-1355737828
aka
2012-12-17 13:50
2013.08.25
Задания на вычислительную практику


15-1363702826
DevilDevil
2013-03-19 18:20
2013.08.25
Ребят, прошу потестировать файловую систему


15-1363897803
Юрий
2013-03-22 00:30
2013.08.25
С днем рождения ! 22 марта 2013 пятница


1-1311150598
FosterGrand
2011-07-20 12:29
2013.08.25
Сбой кодировки в ToolBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский