|
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 |
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 21.04.2023, 22:24 | ||
|
Вот так будет работать правильно: Debug.Print AscW(Mid(DirName, 1, 1)) & " " & AscW(Mid(DirName, 2, 1)) & " " & AscW(Mid(DirName, 3, 1)) & " " & AscW(Mid(DirName, 4, 1))
Добавлено через 28 секунд Просто поменять Asc на AscW и всё, для уникодных символов надо именно так Добавлено через 1 минуту
0
|
||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 21.04.2023, 22:25 [ТС] | ||
|
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||
| 21.04.2023, 22:31 | ||||
|
Добавлено через 2 минуты Добавлено через 4 минуты
0
|
||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||
| 22.04.2023, 12:25 | ||||
|
Добавлено через 3 минуты Надо просто иметь банальные представления о том, в каком виде хранятся строки в VB6. Что такое байт, а что такое символ. Какие функции использовать. Знать функции Chr, ChrW, Asc, AscW, Mid, MidB как минимум... Добавлено через 7 минут Добавлено через 27 минут Добавлено через 2 минуты Для того чтобы скидывать в ЛОГ-файл нужно записывать файл на бинарном уровне через байтовый массив обязательно, а не через строку. Добавлено через 49 минут Вы даже поленились просто почитать справку по функциям Asc и AscW, просто даже нажав F2 в бейсике и введя имя функции можно же увидеть описание Asc: Function Asc(String As String) As Integer Member of VBA.Strings Returns the ANSI character code of the first character in a string AscW: Function AscW(String As String) As Integer Member of VBA.Strings Returns the native character code of the first character in a string (Unicode or ANSI) Хочу подчеркнуть, что Asc возвращает только ANSI character code. AscW возвращает (Unicode or ANSI) ну это же очень просто ну Добавлено через 1 минуту Другими словами функция Asc никогда не сможет вернуть номер китайского символа.
0
|
||||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 22.04.2023, 12:54 [ТС] | ||
|
HackerVlad, Так вы разберитесь прежде, я всё-таки лгун? Или нет? А то как-то непонятно знаете ли. За наше не такое уж и длительное общение, я о О СЕБЕ узнал от вас значительно больше нового , чем о Visual Basic. и оскорблений наслушался и определений. Теперь вот озадачен. Лгун я или просто не квалифицирован?Уж простите, но увольте. С Вашими нервами и больным самолюбием... себе дороже. Я возможно и не имею достаточно квалификации, но склонен прислушиваться к адекватным людям. Простите.
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||||
| 22.04.2023, 13:37 | ||||||||
|
Вот специально для вас написал пример (урок) по записи и чтению китайского символа.
Добавлено через 1 минуту Я тоже не хочу с вами больше общаться. Добавлено через 12 секунд Никакой благодарности. Добавлено через 31 минуту
0
|
||||||||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|||||
| 22.04.2023, 13:57 [ТС] | |||||
|
Потому как то, что вы пишете..., боюсь даже представить, какими мыслями наполнена ваша голова. Ещё раз простите, без злого умысла. Это единственный совет который я вам дам и единственное вмешательство в ваши личные вопросы.
1
|
|||||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|
| 22.04.2023, 19:43 [ТС] | |
|
Dragokas, вы меня простите, я конечно приму ваш совет к сведению в качестве информации на будущее,
Но к данной ситуации он не имеет никакого отношения. Корень этой ситуации совсем в другом.
0
|
|
|
Модератор
|
||
| 22.04.2023, 20:47 | ||
|
0
|
||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 22.04.2023, 21:26 [ТС] | ||
|
Вы случайно не подскажете, как можно определить Какое имя файла в ЮНИКОДЕ, а какое нет. Вот я получаю строковую переменную, в которой имя файла. Как мне при помощи VB6 выяснить, что это строка, которая содержит именно ЮНИКОД или ANSI?
0
|
||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
||
| 22.04.2023, 21:58 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 22.04.2023, 22:04 | ||
|
1
|
||
|
7 / 7 / 0
Регистрация: 21.12.2016
Сообщений: 152
|
|
| 22.04.2023, 22:05 [ТС] | |
|
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||
| 22.04.2023, 22:10 | ||||||
|
Написал сейчас по быстрому функцию, вроде ничего сложного же
0
|
||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 23.04.2023, 15:47 | |||
|
Добавлено через 1 минуту Надо тогда сравнивать два варианта текста получается. Оригинальный в Wide формате и текст отконвертированный в ANSI и проверять а появились ли вопросики там где их раньше небыло, другого на ум ничего не приходит тут уже Добавлено через 3 минуты Добавлено через 5 минут А вообще мне кажется надо просто знать номера символов которые интересуют для определения в диапазоне конечно и их искать, например: If strW Like "*[" & ChrW(192) & "-" & ChrW(255) & "]*" Then ' Если строка содержит символы в диапазоне от 192 до 255 (обычно это кракозяблики, но не всегда)
0
|
|||
|
|
||||
| 23.04.2023, 15:49 | ||||
|
Добавлено через 1 минуту
1
|
||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 23.04.2023, 16:08 | ||
|
Добавлено через 10 минут А можно пойти от обратного и проверить 1. Если строка не содержит все латинские символы 2. Если строка не содержит все русские символы 3. Если строка не содержит все доступные спец символы Значит логично что строка содержит экзотическую строку с уникодом типа китайщины Добавлено через 38 секунд А лучше всего всё-таки сразу диапазон китайщины знать и искать мне кажется
0
|
||
| 23.04.2023, 16:08 | |
|
Переименование 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. А теперь человек произносит «мастдай» с усмешкой - и. . .
|