|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||||||
FindFirstFile не корректно определяет имена файлов с диакритическими знаками18.04.2023, 21:49. Показов 5436. Ответов 88
Метки нет (Все метки)
Доброго времени суток.
Делаю програмку, необходимо получить содержимое папки (список папок и файлов) и после определить ФАЙЛ или ПАПКА и другие атрибуты. Как всегда делал раньше, через API "FindFirstFile", привык, удобно и есть заготовки кода. И вот, выясняется такая неприятная ситуация. На компьютере есть несколько видео файлов с испанскими названиями. В них содержатся слова с Диакритическими знаками. например: "Niño cristiano GANA! concurso secular YouTube.flv español.mp4" Как выяснилось, "FindFirstFile" возвращая имя этого файла, возвращает его как: "Nino cristiano GANA! concurso secular YouTube.flv espanol.mp4" - ну и в дальнейшем соответственно вся обработка рушится. Вот код, давно когда-то нашёл на просторах интернета и всегда использовал:
Облазил весь интернет, так и не понял, как можно исправить данную ситуацию. Читал на каком-то зарубежном С++ форуме, что используют FindFirstFileW и WIN32_FIND_DATAW Но как это оформить и поможет ли это в моём случае, до конца так и не понял. Даже не понял, как объявить правильно на vb6. Если не затруднит, подскажите кто знает, решение. А лучше готовый кусок кода. Буду очень признателен.
0
|
||||||
| 18.04.2023, 21:49 | |
|
Ответы с готовыми решениями:
88
Работа с файлами поиск файлов FindFirstFile,FindNextFile |
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||||||||||||
| 19.04.2023, 14:11 [ТС] | ||||||||||||
|
В частности:
Я беру ваши данные из WFD.ftCreationTime
0
|
||||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 19.04.2023, 14:37 | ||
|
Добавлено через 11 минут Если внимательней бы посмотрели то поняли бы что структуру с FILETIME я немного изменил на Currency для упрощения Добавлено через 4 минуты Кстати, там надо использовать WFD.ftLastWriteTime для правильно получения даты и времени файла. Добавлено через 27 секунд ftCreationTime не подходит, мой косяк, не подумал
0
|
||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||||||||||||||||||||||
| 19.04.2023, 15:11 [ТС] | ||||||||||||||||||||||
|
Вот здесь вы мне выложили код, который почти полностью меня устраивает! Я взял из него вот эту часть:
через неё, вы передаёте изнутри функции наружу, массив имён файлов. Я просто добавил к этим именам ещё и дату и время.
0
|
||||||||||||||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 19.04.2023, 16:10 | |||
|
dirDateTime As Currency Моя функция определения даты оперирует с Currency Добавлено через 27 минут Добавлено через 45 секунд Плюс надо проверять объявления APi на Currency или на FILETIME Добавлено через 3 минуты Моя функция итак прекрасно работает на Currency. Добавлено через 16 минут От пользовательского типа советую отказаться, как было сделано у меня, у меня всё работало. Добавлено через 7 минут Лучше уже два разных массива уж точно работает код чем один массив структуры не хочет работать Добавлено через 32 секунды Чем не устроило как у меня два разных массива один String а другой Currency Добавлено через 11 секунд И всё работает у меня.
0
|
|||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|||
| 19.04.2023, 16:18 [ТС] | |||
|
Это какой-то вопрос непосредственно с самой функцией: FileTimeToSystemTime Именно к ней вопрос. Вопрос в том, как корректно ftCreationTime As FILETIME превратить в SYSTEMTIME? остальное работает.
0
|
|||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 19.04.2023, 16:27 | |
|
Я всё сделал. С массивом пользовательского типа FileNameAndDateTime даже. Всё работает.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||
| 19.04.2023, 16:55 | ||||||
|
Получайте массив Currency а потом перебирая этот массив Currency просто профильтровывайте используя функцию FileTimeToString
Всё, ставьте лайке, не жалейте спасибок, и обязательно пометьте самое лучший пост как решение. Всем спасибо. Добавлено через 18 минут Где мои лайки??? Где спасибки???
0
|
||||||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 19.04.2023, 17:04 [ТС] | ||
|
Второе, спасибо я вам сказал, уже не однократно. За код, который вы мне дали в самом начале. Именно он мне нужен и он мне подошёл. И третье, знаете, ПОМОЩЬ - это когда ты человеку даёшь то, что ОН просит и то, что ему нужно, а не то, что ВАМ кажется ему лучше и проще дать. Искренне признателен за Вашу помощь. Я покопался в коде, поудалял дубликаты деклараций и заРЕМил некоторые строки. Вроде ошибка пропала, сейчас последовательно будут снимать REMы и искать почему появляется эта ошибка.
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 19.04.2023, 18:09 | ||
|
Добавлено через 1 минуту Никаких ошибок у меня нет.
0
|
||
|
|
|
| 21.04.2023, 18:27 | |
|
DirW
Юникодный аналог VB Dir (изначально, автор The Trick). GetFileDate Можно передавать либо путь к файлу (либо его хендл последним аргументом). 2-й аргумент тип получаемых данных - дата создания, изменения или создания. На выходе - Date. Учитываются конвертации, с учётом выставленного локально UTC. Прим.: Все декларации можно найти в том же модуле, либо в modGlobals. Функцию ToggleWow64FSRedirection можно удалить из кода, если доступ к файлам папки C:\windows\system32 не интересует.
1
|
|
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|||||||||||
| 21.04.2023, 21:07 [ТС] | |||||||||||
|
HackerVlad,
Доброго времени суток, опять. Всё великолепно работает, я всё поправил и исправил ошибки. Но выяснилась одна проблема. У меня оказывается среди файлов, завалялись ресурсы вот с такими именами:
в этом месте:
Возможно ли как-то поправить этот момент?
0
|
|||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 21.04.2023, 21:22 | |||
|
Добавлено через 11 минут
0
|
|||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 21.04.2023, 21:35 [ТС] | ||
|
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 21.04.2023, 21:48 | |
|
Китайские иероглифы не отображаются в Windows XP если не качать специальные уникодные шрифты. Начиная с Windows 7 никаких проблем не должно быть. Шрифт лучше выставить который уж точно поддерживает китайщину, например Segoi UI. Выводить на экран китайщину можно функцией DrawTextW для проверки, пример у меня в соседней теме: Функция QueryFullProcessImageName врёт и возвращает неправильный, уже не существующий, путь к исполняемому файлу
0
|
|
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||||||
| 21.04.2023, 21:59 [ТС] | ||||||
|
HackerVlad, Это никак не связано со Шрифтами!
В системе у меня отображаются эти файлы корректно. Как в Проводнике, так и в Far manager.
0
|
||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 21.04.2023, 22:03 | |||
|
Добавлено через 1 минуту
0
|
|||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 21.04.2023, 22:05 | |
|
Никаких проблем с китайщиной в моём коде уж точно нет. Внимание на экран :-)
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 21.04.2023, 22:12 | |
|
И даже Ваш код проверил, никаких 63, 63, 63, 63 там и в помине нет даже, никаких вопросительных знаков, внимание на скриншот!
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 21.04.2023, 22:20 | |
|
Хотя, Debig.Print таким дебильным образом и правда будет возвращать 63, это же надо было додуматься до такого тупого кода блин
Добавлено через 2 минуты Mid нельзя использовать здесь Добавлено через 52 секунды Хотя нет, Mid использовать можно Надо использовать AscW
0
|
|
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|
| 21.04.2023, 22:21 [ТС] | |
|
HackerVlad,
Послушайте, во первых я взял код ваш отсюда, а не из файла с ЛистБоксом. Ваш файл я не использовал. Во вторых, не имейте привычки судить других людей по себе. Я принципиально никогда не лгу, мне не зачем. Доказывать я вам ничего не намерен. Требовать я с вас ничего не требую. Я сказал как есть, Ваш код возвращает знаки вопроса - это не опровержимый факт. Если вы реально помочь не способны, психовать ненужно. Может кто-то другой что-то подскажет. Попробую код который предложил Dragokas.
0
|
|
| 21.04.2023, 22:21 | |
|
Переименование PDF-файлов в имена, берущиеся из содержимого этих файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|