Zefick
> Но DX8 это не компонент винды. Никогда им не был и не является сейчас. О чём ты вообще говоришь?
Не являлся во времена хп. Сейчас композитор окон на нем подвязан, так что является.
Ну кроме серверной
monobogdan
Ещё раз, то что он отдельно инсталлируется — не является признаком некомпонента.
entryway
> CreateFile/ReadFile - всё как учил роннико
Под семеркой с ними фокус с setlocale уже не прокатывает, переданную строку CreateFileA уже не хочет воспринимать как UTF-8, тогда как стоящий рядом же fopen работает как надо.
Имбирная Ведьмочка
> то что он отдельно инсталлируется — не является признаком некомпонента.
Это является признаком того, что он зависит от системы, а не она от него. Всё остальное уже не имеет никакого отношения к теме. Если хочешь, то можешь называть рантайм Java или Python частью системы, я абсолютно не против, просто не надо это никому навязывать и надо иметь в виду, что не все с этим согласны.
monobogdan
> Не являлся во времена хп. Сейчас композитор окон на нем подвязан, так что является.
Обзор от ИИ
DirectX 8 не поддерживается официально в Windows 11. Windows 11 включает DirectX 12, и хотя более старые версии DirectX, такие как DirectX 9, могут работать через совместимость, DirectX 8 не включен в современные пакеты DirectX и не поддерживается напрямую
Dmitry_Milk
> Под семеркой с ними фокус с setlocale уже не прокатывает, переданную строку CreateFileA уже не хочет воспринимать как UTF-8
Так оно и под десяткой не прокатывает. Эта магия только для ucrt.
Dmitry_Milk
А-а, таки можно заставить работать CreateFileA с UTF-8 в Win10. Надо просто в региональных настройках поставить галочку
[x] Beta: Use Unicode UTF-8 for worldwide language support.
Помню же, что где-то читал про эти A функции, что тоже должны работать. В ссылке на википедию, которую сам и дал на предыдущей странице.
In April 2018 (or possibly November 2017), with insider build 17035 (nominal build 17134) for Windows 10, a "Beta: Use Unicode UTF-8 for worldwide language support" checkbox appeared for setting the locale code page to UTF-8. This allows for calling "narrow" functions, including fopen and SetWindowTextA, with UTF-8 strings. However this is a system-wide setting and a program cannot assume it is set.
Все-таки проще считать, что винда в нормальный UTF-8 не умеет, нельзя надеяться на то, что эта галочка стоит или что пользователь захочет ее поставить.
Имхо, надо было майкам не локалями крутить, а добавить к ...A и ...W еще и версии функций ...U8, которые ожидают все строковые аргументы как utf-8 строки.
Dmitry_Milk
>
> Имхо, надо было майкам не локалями крутить, а добавить к ...A и ...W еще и версии функций ...U8, которые ожидают все строковые аргументы как utf-8 строки.
сделать как в нормальных языках. В том числе и в майковских. К Аргументом функции указывать ещё и кодировку
Dmitry_Milk
> Все-таки проще считать, что винда в нормальный UTF-8 не умеет,
Плюсую. Просто для надёжности везде в винапи передаю utf-16 из fs::u8path взятого.
Dmitry_Milk
Достаточно было просто A функции заменить с ASCII на UTF-8, было бы максимально прозрачно.
nes
> A функции заменить с ASCII на UTF-8, было бы максимально прозрачно
Нет, это хуже, т.к. рушит обратную совместимость для программ, которые работают с учетом codepage. Например, у меня до сих пор на работе используется система, написанная на Дельфи 7, и она слишком гигантская, чтоб переписывать ее под UTF-8 (разрабатывалась и дорабатывалась наверное в течение 10 лет, начиная где-то с 2000 года, там больше сотни разных форм и SQL-таблиц).
FlyOfFly
> у пользователя папка с китайской игрой может находится в папке с китайскими иероглифами.
Все пути внутри игры - относительные. Обычно относительно того каталога, откуда запущен экзешник. Ну то есть в норме у тебя вообще никогда полный путь не окажется в памяти твоей игры. У тебя будет только относительный путь. А он - всегда латиницей.
Dmitry_Milk
> когда в языке такой функции вообще нет и не было.
Но под винду то всегда есть.
Это стандарт которому лет 40 наверное.
Давай так: лично ты в каком своём проекте называл внутренние файлы не латиницей?
Нет такого проекта?
Вот и весь спор.
nes
Тебе тот же вопрос.
Какой конкретный был у тебя проект, где ты именовал файлы не латиницей.
Давайте, покажите мне что юникод нужен.
Я помню в GTA V проблемы у меня были из-за русских символов в пути...лет так 10 назад или когда там портировали игру на пк
122
Для работы делал персеры телеметрии блоков управления спутником, в которых нужно выбирать файлы для разбора через диалог или перетягиванием в окно программы.
Файлы телеметрии у нас хранятся на сервере в папках с русскими названиями.
122
> Но под винду то всегда есть
Да как раз же под винду и нет. Под юниксом есть системный вызов open, под виндами нет (по крайней мере не было до десятки), ты чего-то путаешь.
122
> Это стандарт которому лет 40 наверное.
это про функции из стандартной сишной либы, в частности про fopen. Вот эта либа реализована под любые операционные системы.
Ты уж определись, ты про open или про fopen.