|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Программа генерирует файлы и кладет их в определенную папку. Имена файлов не должны пересекаться, следить че там есть было будет, хранить число и увеличивать на 1 -неохота. Свой файл, свои дела. Разумно привязываться к времени. типа ггммддччммсс вероятность попасть 2 раза в одну секунду есть. ну ладно ггммддччммсс+миллисекунды ну, при каком-то маловероятном случае можно попасть и в миллисекунду, ну мало-ли, какой-то левый процесс тормознул дела на компьютере и два файла свалились одновременно (или скорее тот "кто файлы делает" "быстро сработал в 2 потока"). Можно добавить еще случайное число скажем от 0 до 1000 (на vb кстати такой ф-ции не знаю, насколько помню Rnd мается одной и той же дурью). Ну и наконец как-то посолидней файлы обозвать надо. Типа 3B54B0B2 3B54AF7D 3B2F1681 39BC5A37 390F9B17 Как бы все это дело грамотно об Hex ить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 04:03 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
А почему не последовательная нумерация? А почему не случайная с проверкой на существование? А почему не использование системной функции создания и открытия файла со случайным именем? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 08:57 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Попробуйте MD5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 09:39 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77, "солидное" добавление к YYYYMMDDHHMISS Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 09:48 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
ВИКИПЕДИЯGUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028×1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, достаточно мала. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 10:28 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Еще 5 копеек Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2011, 11:19 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Antonariy, GetTempFileName - я обратил внимание на нее, но она не в тему. Еще и файл в tmp создает. М.б. есть параметры, но лучше с ней здесь не вязаться. скукотищаДмитрий77, "солидное" добавление к YYYYMMDDHHMISS ... Set fso = CreateObject("Scripting.FileSystemObject") Ничего солидного в Scripting.FileSystemObject не вижу. Неповторяемость можно проверить через Dir если на то пошло. AkinaА почему не последовательная нумерация? ... Потому что настройки проги накроются, а файлы и логи останутся. Он нужен, этот лишний гимор? HandKot, ваш пример красив (проверил) очень крут, ну т.е. слишком очень. В общем, накрутил так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
По хорошему, есть понятие Time Stamp (штамп времени ) в hex? в линукс? но не знаю как правильно его получить, в принципе какая разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 01:17 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77GetTempFileName - я обратил внимание на нее, но она не в тему. Еще и файл в tmp создает. М.б. есть параметры, но лучше с ней здесь не вязаться. Сказки. Просто надо вызывать его как метод объекта Folder, полученного через GetFolder от требуемой папки. Дмитрий77Ничего солидного в Scripting.FileSystemObject не вижу. Ну да ну да, всё, что выше АПИ - ацтой... Дмитрий77настройки проги накроются, а файлы и логи останутся. Он нужен, этот лишний гимор? А при чём тут настройки программы? файлы остались, определить следующий номер (первый свободный) - задачка для второго класса. К тому же, если возможен вариант "накроются" - надо думать о приведении в порядок надёжности системы, а не о программировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 11:46 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
AkinaДмитрий77Ничего солидного в Scripting.FileSystemObject не вижу. Ну да ну да, всё, что выше АПИ - ацтой... Akina, ничего против вас лично не имею. Но с FileSystemObject я в свое время намучился, долго объяснять... AkinaДмитрий77настройки проги накроются, а файлы и логи останутся. Он нужен, этот лишний гимор? А при чём тут настройки программы? файлы остались, определить следующий номер (первый свободный) - задачка для второго класса. К тому же, если возможен вариант "накроются" - надо думать о приведении в порядок надёжности системы, а не о программировании. "накроются" -элементарно, при переустановке прога удаляет конфигурацию (ну уж извините,мало чего там юзер попортил...ошибки с собой не тащим) А вы прикиньте, что два независимых потока одновременно выяснили, что следующий файл должен называться blablabla120, а на появление самого файла уходит 1-2 сек например от момента принятия решения о его имени. Вот поэтому и разумно привязываться к миллисекундам и разбавлять случайным числом. Ну или действит. супер-GUID А проверка на существование может вообще не помочь в описанной ситуации, не так ли? Поэтому при грамотном алгоритме от нее можно и вовсе отказаться. Лучше мне расскажите, как конвертировать тек. время в Штамп Времени в hex, и что это вообще такое, дабы сделать мою ф-цию более каноничной что-ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 12:29 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77, VB.NET код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 12:53 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
> Автор: Дмитрий77 > А вы прикиньте, что два независимых потока одновременно выяснили, что следующий файл должен называться > blablabla120, а на появление самого файла уходит 1-2 сек например от момента принятия решения о его имени. И что? в любом случае должна быть обработка ошибок. Ловиш ошибку, что такой файл существует и генериш новое имя. И так пока не запишется файл или пользователь не нажмет кнопку "Отмена" Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 14:15 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77с FileSystemObject я в свое время намучился, долго объяснять... Ок. Хотя обычно проблемы с ним связаны с тем, что не понята его объектная модель. Дмитрий77как конвертировать тек. время в Штамп Времени в hex Гм... а нафига? Просто строковое представление устроит? тогда Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 18:03 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
AkinaДмитрий77с FileSystemObject я в свое время намучился, долго объяснять... Ок. Хотя обычно проблемы с ним связаны с тем, что не понята его объектная модель. Вынуждаете напрягаться панимаешь ли, поиск производить. scrrun.dll CreateObject("Scripting.FileSystemObject") Токо эта тема закрыта. Навсегда. AkinaГм... а нафига? Просто строковое представление устроит? тогда... Тогда моя ф-ция выше лучше и надежней, и красивше с чем согласитесь конечно. В прилагаемом проекте Command2 +смотреть в дебаг. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 04:50 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77scrrun.dll CreateObject("Scripting.FileSystemObject") Т.е. Вы нашли какие-то свойства или методы у FSO, которые в 98-х отличаются от таковых в 2000? причём именно в минус? А что именно? Потому как в 98-х была версия 3.0 (та же, что и в 2000), в ХР - версия 5.0, полностью обратно совместимая с 3.0... или речь о 16-битном VB-приложении (в какой это было версии последний раз, в третьей вроде)? Дмитрий77Тогда моя ф-ция выше лучше и надежней, и красивше с чем согласитесь конечно. В прилагаемом проекте Command2 +смотреть в дебаг. Посмотрел. Не соглашусь. У меня - 13 строк, в т.ч. половина ушла на дефиниции, у тебя же на такую фигню целый модуль пашет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 21:48 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Akina, Проблема не в модуле (я к таким API наворотам нормально отношусь), а в том что ваша ф-ция, не дает требуемого результата (т.е. цикл от 1 до 10 выводит одно и то же число, даже если чуть подворотить вашу, то будут повторяющиеся варианты). У меня используется 1) миллисикундная точность 2) добавлена случайность Это полностью (даже 2 файла за 1мс маловероятно реально) гарантирует неповторимость имен. Ну т.е. мне такая точность более чем. От GUID я отказался, т.к. визуально начала файлов разные, а у меня они как бы автосортированы по имени /времени. А по поводу сервера сценариев виндоус, Вы знаете, у меня нет никакого желания опускаться и разгребать эту муть еще раз. Есть API, и есть способ тупого чтения файла в лоб. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 23:08 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Дмитрий77ваша ф-ция, не дает требуемого результата (т.е. цикл от 1 до 10 выводит одно и то же число, даже если чуть подворотить вашу, то будут повторяющиеся варианты). У меня используется 1) миллисикундная точность 2) добавлена случайность Это полностью (даже 2 файла за 1мс маловероятно реально) гарантирует неповторимость имен. Ну т.е. мне такая точность более чем. Ну ещё бы! я время тупо беру у Now(), у которого дискретность емнип 55 мс. Загони в ту же переменную не то, что она даёт, а datetime с миллисекундами (нехватает байтов? ну добавь) - и вот оно, щастье... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 23:58 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
AkinaНу ещё бы! я время тупо беру у Now(), у которого дискретность емнип 55 мс. Как это тебе удалось? Я от Now не добился дискретности менее секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 00:28 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Не нравится мне использование Format, не люблю его... Т.е. вот такое что-то... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Как это тебе удалось? Я от Now не добился дискретности менее секунды.Да, у Now - секунда. А вот у Timer - 55 мс. Перепутал. Бывает... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 09:04 |
|
Генератор случайного имени файла (одинаковых быть не должно! никогда!). Идеи?
|
|||
---|---|---|---|
#18+
Akina, мысли вслух Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 14:22 |
|
|
start [/forum/topic.php?fid=60&msg=37226957&tid=2158781]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
others: | 346ms |
total: | 502ms |
0 / 0 |