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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уникальные имена файлов, СНОВА! 
V
    Опции темы
bems
Дата 26.5.2006, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Нужно в папку сохранять файлы без участия юзера. То есть имя должно быть уникальным.
При переборе этих файлов при помощи FindNextFile нужно чтобы они находились в порядке обратном порядку их создания. При этом не свои (юзерские) файлы не нужны вовсе (я их фильтрую по содержанию). 

Какие будут идеи по поводу алгоритма выбора имен?

У меня есть парочка, но вдруг кто-то чего поумнее предложит... 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Sunr1se
Дата 26.5.2006, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть такая идея: получать текущую дату и производить такие вычисления:
Код

Name := FloatToStr(year*100 + mounth + day/100 + hours/10000 + minutes/1000000);

В результате получится действительно уникальное число... Хотя, можно еще секунды и миллисекунды прибавлять. 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
Yanis
Дата 26.5.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Может просто IntToStr(GetTickCount)+'.txt'? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 26.5.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Yanis, не самый надежный способ.
И не удовлетворяет условию задачи.
Т.к. порядок получится вообще какой попало в зависимости от перезагрузки системы.
Код

  FileName := IntToStr($FFFFFFFF - Int64(now)) + '.dat';
end;
Вот так будет правильнее.

Добавлено @ 09:24 
Более поздние файлы должны идти по списку раньше.

Добавлено @ 09:25 
P.S. По дефолту, файндфёст будет находить файлы в порядке их создания, независимо от имени. 
PM MAIL   Вверх
bems
Дата 26.5.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Snowy @  26.5.2006,  09:24 Найти цитируемый пост)
P.S. По дефолту, файндфёст будет находить файлы в порядке их создания, независимо от имени. 
да? хреново...
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 26.5.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ищи, добавляй в стринглист, сортируй - будет нужный результат.

Добавлено @ 09:41 
Как вариант - при добавлении нового файла, менять ему дату создания на более раннюю.
Но не факт, что поможет. Я не проверял. 
PM MAIL   Вверх
Yanis
Дата 26.5.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Snowy @  26.5.2006,  10:24 Найти цитируемый пост)
Yanis, не самый надежный способ.

Знаю, просто подумал, что может для простой задачи и так пойдёт.

bems
Почему бы вообще не завести свой тип файлов? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
bems
Дата 26.5.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Yanis @  26.5.2006,  09:50 Найти цитируемый пост)
Почему бы вообще не завести свой тип файлов?
Именно так я и сделал. Ну а как это касается темы?

Добавлено @ 09:55 
Цитата(Snowy @  26.5.2006,  09:39 Найти цитируемый пост)
Ищи, добавляй в стринглист, сортируй - будет нужный результат.

В проекте SysUtils - роскошь, а ты про стринглист smile  


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Yanis
Дата 26.5.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(bems @  26.5.2006,  10:53 Найти цитируемый пост)
Именно так я и сделал. Ну а как это касается темы?

Я имею, что файлы юзера и файлы твоей программы пересекаются. Может можн как то разграничить? В отдельные папки например... 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
bems
Дата 26.5.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Yanis @  26.5.2006,  10:03 Найти цитируемый пост)
Я имею, что файлы юзера и файлы твоей программы пересекаются. Может можн как то разграничить? В отдельные папки например...  
Не пересекаются. Но теоретически могут. Он и лежат в отдельной папке, но выводить юзеру какие-либо сообщения смысла нет, все должно работать в фоновом режиме. И если юзер залезет в мою папочку и начнет там извращаться, то нужно вести себя как можно устойчивее.
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Yanis
Дата 26.5.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Тогда просто создавай файл - список нужных тебе файлов. И чужие файлы в этот список уже никак не влезут... 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
bems
Дата 26.5.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Yanis @  26.5.2006,  10:13 Найти цитируемый пост)
Тогда просто создавай файл - список нужных тебе файлов. И чужие файлы в этот список уже никак не влезут...  
Усложняет все. Этот файл индекса уже не назовешь произвольно - нужно ж его как-то отличать от других. Поэтому придется делать предположение, что хотя бы такого имени еще нет. 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 26.5.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ну с уникальностью ясно.
Вопрос с упорядочиванием файлов.
Тебе нужен последний созданный файл или список файлов, упорядоченных по дате создания?
Если первое, то просто беги файндфёстом и бери последний.
Если второе, то беги фаёндфёстом и организуй стек из имен файлов.
Потом для работы просто доставай из стека по одному. 
PM MAIL   Вверх
bems
Дата 26.5.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(Snowy @  26.5.2006,  11:04 Найти цитируемый пост)
Тебе нужен последний созданный файл или список файлов, упорядоченных по дате создания?
Клиент посылает проге дату последнего известного сообщения лога. В хедере файла есть начальная и конечная дата лога. Нужно передать клиенту информацию от текущей даты вниз до последней известной. Если искать в порядке убывания дат то будет значительно быстрее (считая что файлов сотни в пределе и нужно открывать для чтения каждыый в этом диапазоне)
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 26.5.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Но построить стрек имен файлов ведь недолго.
Для этого их совсем не нужно открывать.
Кроме того, если в имени файла уже заложена дата, то не нужно открывать все - можно сориентироваться по имени или дате создания. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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