Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
3-1177407202
Павел Калугин
2007-04-24 13:33
2007.08.05
Посоветуйте как лучше организовать календарь


15-1183614347
Qzzma
2007-07-05 09:45
2007.08.05
Книги по Delphi Pascal для "девушек"


15-1183616943
Vlad Oshin
2007-07-05 10:29
2007.08.05
Психология. Опрос.


2-1183891606
Kolan
2007-07-08 14:46
2007.08.05
Если в пакете есть форма, то гл. форма не показывается на TaskBar


4-1171311941
Dmitry_177
2007-02-12 23:25
2007.08.05
как определить контекст указателя(курсора)?




   Наверх