Главная страница
    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.45 MB
Время: 0.039 c
15-1183635469
@!!ex
2007-07-05 15:37
2007.08.05
Как до ставить Linux.


1-1179996370
SergeyG
2007-05-24 12:46
2007.08.05
В реальном времени нужно рисовать график(и) данных.


2-1184067507
Q8
2007-07-10 15:38
2007.08.05
InterBase(проблема с IBConsole)


15-1183887525
ArtemESC
2007-07-08 13:38
2007.08.05
Есть ли какие-нибудь форумы где можно задавать ...


10-1135171487
dapher
2005-12-21 16:24
2007.08.05
Фабрика класса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский