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

Вниз

Длинное и короткое имя файла в одном флаконе. :)   Найти похожие ветки 

 
Riply ©   (2007-07-07 10:33) [0]

Здравствуйте !
Допустим у нас есть имя файла в юникоде
(без пути): wFileName: array[0..Pred(NameLen)] of WideChar;
Задача: изменив в массиве wFileName минимум байт (позиция любая, размер NameLen менять нельзя)
ухитриться сохранить в нем и длинное и короткое имя файла.
Т.е результат должен быть таким: по нашему желанию из измененного wFileName,
мы можем получить либо длинное, либо короткое имя.
Это реально т.к. на символы, используемые в реальном имни файла есть ограничения,
а при внесении изменеий их нет. Например: если третий символ - #9 или \ (имя без пути),
то мы знаем, что это наш символ.
Он может нести информацию о том что было в своем значении и в своей позиции.
P.S.
Пытаюсь в этом разобраться потому, что есть основания полагать,
что Microsoft иногда использует подобный алгоритм, для хранения имен файлов.
Конечная цель: воссоздать Microsoft - кий алгоритм.
А, может он у кого-то уже есть ? :)


 
Anatoly Podgoretsky ©   (2007-07-07 10:40) [1]

> Riply  (07.07.2007 10:33:00)  [0]

Если имя можно предствить в ANSI то задача простая

ANSI Long | separator | ANSI Short | Null terminator

При этом не важна длина Wide - всегда получается.

А вот если нельзя в ANSI то задача решения не имеет, если не брать в расчет методы используемые в архиваторах


 
Anatoly Podgoretsky ©   (2007-07-07 10:43) [2]

По другому - поскольку WideChar занимает два байта, то надо преобразовать в однобайтовые кодировки, что и позволит хранить два имени + разделитель.


 
Riply ©   (2007-07-07 10:54) [3]

> [1] Anatoly Podgoretsky ©   (07.07.07 10:40)
>Если имя можно предствить в ANSI то задача простая
>ANSI Long | separator | ANSI Short | Null terminator
Спасибо. Могла бы и сама сообразить. Думать разленилась :)
Дело еще и вот в чем:
Из некоторых структур MFT, я вытаскиваю "измененные" юникод-имена.
Внешне изменения не похожи на, предложенный Вами вариант.
При переводе такого имени в ANSI, один символ (чтобы было два не встречала)
изменен. Примеры (пути добавлены мной):
D:\ATI\atidesk\FACCES.DLL
D:\Dissertation Kraft\Off_Docs\Выиска НТС.doc
D:\FdlNew\Dual files\Dul69a.int
D:\FdlNew\INP Files\defaul.inp
D:\Mathematics\Color\CiteSeDr\liu93multiresolution.pf
D:\Mathematics\Numerical Methods\LSDEMO.PAS
D:\Mathematics\Numerical Methods\SAMPLE6D.DT
D:\Mathematics\Numerical Methods\SAPLE3F.DAT
D:\Text\Electronical report 2005\Primary_Image.mp
Я хочу научиться извлекать отсюда "правильные" имена по "Microsoft-овски" :)


 
Riply ©   (2007-07-07 23:22) [4]

>[0] Riply ©   (07.07.07 10:33)
>Пытаюсь в этом разобраться потому, что есть основания полагать,
>что Microsoft иногда использует подобный алгоритм, для хранения имен файлов.
Оказалось, что все это фантазии от безнадежных попыток найти ошибку :)
P.S.
Собака порылась совсем в другом месте :)



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1183974986
alles
2007-07-09 13:56
2007.08.05
BDE: Программно создавать новый алиас


11-1166851461
alex1111111111111111
2006-12-23 08:24
2007.08.05
Помогите хочу установить замену системных модулей


15-1183620529
Kerk
2007-07-05 11:28
2007.08.05
[usability] регистрация


15-1183907968
ArtemESC
2007-07-08 19:19
2007.08.05
Почему еда (фаст-фуды) стала напоминать пластик?


15-1183510913
Рубль
2007-07-04 05:01
2007.08.05
День рождения независимости