При попытке удалить видеофайл "Минусы Windows 10 и пара плюсов.mp4" размером 135 Мб выдает, что функция не поддерживается. Файл не сжат и не зашифрован.
Причина в этом http://prntscr.com/ioarng ?
NTFS
-
Из хаоса в космос
Трудно сказать, в NTFS очень много нагорожено. Если считать все мелочи, то не поддерживается сейчас больше, чем поддерживается.
Pathoswithin
Можешь сделать поддержку длинного тире "—" и украинских букв?
Вот сейчас записал фильм "Ричард Фейнман- Характер физического закона. Лекция #1. Пример физического закона — закон тяготения.mp4" и не могу его посмотреть
Можешь сделать поддержку длинного тире "—" и украинских букв?
Вот сейчас записал фильм "Ричард Фейнман- Характер физического закона. Лекция #1. Пример физического закона — закон тяготения.mp4" и не могу его посмотреть
Из хаоса в космос
А при чём здесь NTFS? Уже давно сделал — сисфункция 80.
Если кто сравнивает с виндой, то там ср1251, а у нас ср866.
Если кто сравнивает с виндой, то там ср1251, а у нас ср866.
Что-то подобное уже обсуждалось http://board.kolibrios.org/viewtopic.ph ... =15#p67402Leency wrote:поддержку длинного тире "—" и украинских букв
Там предлагались некоторые варианты.
В винде FindFirstFile и FindNextFile работают со структурой TWIN32FINDDATA, в которой есть cAlternateFileName.Pathoswithin wrote:Если кто сравнивает с виндой
Для имени "Димна Суміш - О Боже Мій" имя в формате 8.3 будет "ДИМНАС~1", а если вывести имя в консоль, то вывод будет такой "Димна Сум_ш - О Боже М_й".
Файл остаётся доступен по имени "ДИМНАС~1".
Просто сравнил.
Если кто продолжает сравнивать с виндой, то у нас ещё есть драйвер файловой системы ext, которая вообще не хранит имя в формате 8.3
К тому же в нашей структуре изначально нет ничего вроде cAlternateFileName...
К тому же в нашей структуре изначально нет ничего вроде cAlternateFileName...
Возможное решение - утилита, которая использует сисфункцию 80 и переименовывает по каким то правилам или в заданное неюникодное имя.
Проблема только в отсутствии подфункции переименования - придется копировать (
Проблема только в отсутствии подфункции переименования - придется копировать (
http://board.kolibrios.org/viewtopic.php?f=1&t=3545
Только NTFS пока не поддерживает.
Только NTFS пока не поддерживает.
Почему в функции 80 кодировка +20, а путь +24.
Почему не наоборот? Тогда можно было бы иметь одну структуру под обе функции 70 и 80.
Почему не наоборот? Тогда можно было бы иметь одну структуру под обе функции 70 и 80.
Из хаоса в космос
Разбираюсь с функцией 80. Я указал кодировку для чтения папки и для вывода строки. Почему не работает?
- Attachments
-
-
kolibri.zip (1.29 MiB)Downloaded 144 times
-
Из хаоса в космос
Разобрался. Я потратил около 3-4 часов.Leency wrote:Разбираюсь с функцией 80. Я указал кодировку для чтения папки и для вывода строки. Почему не работает?
Не работало по двум причинам:
1. Размер структуры BDVK для файла в CPP 304 байта, а в UTF 520. Моя ошибка.
2. Для функции чтения папки 80 кодировку нужно указывать в двух местах О_о Верхняя видимо на получение данных, а нижняя на строку пути. Документация ещё на функцию 80 такова, что е тупо нет - это ссылка на ф70 в обих чертах, но в чём различие не очевидно.
- Attachments
-
-
Screenshot_1.png (150.97 KiB)Viewed 13497 times
-
Из хаоса в космос
Как здесь уже писали выше, файлы со спецсимволами в названии доступны, когда у них есть имя в ms-dos формате 8.3
Сложность в том, как узнать эти 8.3 имена. Пока что алгоритм такой:
1. В Windows XP через Volkov Commander посмотреть имена нужных файлов.
2. Записать соответствие вручную в текстовый файл, как на скриншоте. Имя папки я сделал без спецсимволов, иначе некоторые даже виндовые программы не откроют.
3. Осталось как-то открыть файл. OpenDialog не позволяет ввести имя файла, но через команду "Запуск программы" Win+R это можно сделать.
Хорошо бы иметь какой-нибудь способ посмотреть 8.3 имена прямо в Колибри. Может быть, он уже есть, а я туплю и не нашёл?
И ещё: файлы, созданные в Колибри, не видны в Volkov Commander (только при удалении папки предупреждение, что она не пуста). Похоже, из-за отсутствия этих самых 8.3 имён. Сложно ли это исправить? При установке винды я всегда обнуляю NtfsDisable8dot3NameCreation.
Сложность в том, как узнать эти 8.3 имена. Пока что алгоритм такой:
1. В Windows XP через Volkov Commander посмотреть имена нужных файлов.
2. Записать соответствие вручную в текстовый файл, как на скриншоте. Имя папки я сделал без спецсимволов, иначе некоторые даже виндовые программы не откроют.
3. Осталось как-то открыть файл. OpenDialog не позволяет ввести имя файла, но через команду "Запуск программы" Win+R это можно сделать.
Хорошо бы иметь какой-нибудь способ посмотреть 8.3 имена прямо в Колибри. Может быть, он уже есть, а я туплю и не нашёл?
И ещё: файлы, созданные в Колибри, не видны в Volkov Commander (только при удалении папки предупреждение, что она не пуста). Похоже, из-за отсутствия этих самых 8.3 имён. Сложно ли это исправить? При установке винды я всегда обнуляю NtfsDisable8dot3NameCreation.
Найдена проблема в работе драйвера. При использовании сисфункции 70.3, которая должна заменять часть файла, часть файла по смещению выше чем записываемый блок удаляется. Тестирование производил на ноутбуке, где основная ос виндовс 10.
На скриншоте файл открыт в HEX редакторе до и после выполнения замены.
На скриншоте файл открыт в HEX редакторе до и после выполнения замены.
Spoiler:
Просмотрел код. Да, похоже функция всегда устанавливает размер файла в каталоге, а должна только увеличивать. Так тестировали, что заметили только сейчас. Видимо непопулярный расклад. Только я уже много лет не занимался программированием, сам не исправлю...
Если что, там всего-то нужно сделать сравнение перед строкой 3481 в ntfs.inc, это должно исправить ошибку для файлов более 1 Кб, но вот на счёт файлов менее 500 байт возможно кое-что ещё...
Если что, там всего-то нужно сделать сравнение перед строкой 3481 в ntfs.inc, это должно исправить ошибку для файлов более 1 Кб, но вот на счёт файлов менее 500 байт возможно кое-что ещё...
Если точнее, нужно вставить вместо строк 3481 и 3482 что-то вроде этого:... и протестировать крупные и мелкие файлы.
Code: Select all
cmp edx, [edi+fileRealSize+4]
jc @f
jnz .resize
cmp [edi+fileRealSize], eax
jnc @f
.resize:
mov [edi+fileRealSize], eax
mov [edi+fileRealSize+4], edx
@@:
Who is online
Users browsing this forum: No registered users and 1 guest