Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.042 c
15-1184072092
kopel
2007-07-10 16:54
2007.08.05
распознавание символов


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


15-1183650299
Cyrax
2007-07-05 19:44
2007.08.05
Термин "квалификационный ранг" по английски...


15-1183973813
Anatoly Podgoretsky
2007-07-09 13:36
2007.08.05
Паскаль


2-1184085506
WhiteCat
2007-07-10 20:38
2007.08.05
Диск в CDROM?





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