Яков Е, ну не знаю я, типа как в STL есть experimental. Я склонировал репозиторий, и тег v5.15.0 там есть. Нужно, видимо, собирать пробовать. А потом ещё и как-то линковать. Потому что писать через low-level классы будет куда сложнее и дольше.
Евгений Шатунов, у каждого свой стиль. Чем больше разного кода читаешь, тем легче потом читать. Нужно привыкать к разному форматированию, но только не к говнокоду. На какаом таком производстве? Программисты обычно не говорят о своей работе как о "производстве". Я тоже код пишу "на производстве", так что с того?
Евгений Шатунов, не спорю, частенько это не так, но в данном случае, скорее всего, код форматирован плохо. Я не вижу кода, а только два вложенных ветвления, так что...
Чтобы знать, что не так, нужно знать что и как там работает. Скорее всего координаты "персонажа" идут от его центра, поэтому нужно учитывать его радиус, или ширину с длинной, или расстояние от центра до вершины полигона.
Saboteur, спобо простой, я запсиывал через std::filesystem, и при 235 ASCII всё падало с ошибкой, а при 234 - нет. MAX_PATH - не MAX_FILENAME_LENGTH (второе я, конечно, выдумал).
Евгений Шатунов, опытным путём выяснил, что ASCII помещается ровно 234, и ни символом больше, дальше падает. Записывал через std::filesystem. А при добавлении кириллицы - резко меньше. Уж не знаю в чём там дело, но ковыряться ради этого в платформозависимых либах не буду.
Я в тегах отметил, что работаю через кросплатформенный фреймворк и кроссплатформенную стандартную плюсовую либу. В страшном сне я видел WinAPI.
res2001, ды речь не о полном пути, а о имени конкретного файла. У Линукс ограничение в 255 байт, а не символов. Если добавить не ASCII, то, естественно, будет меньше. Впрочем, я уже решил проблему радикально, пишу данные в текстовый CSV файл. Нафиг такие трудности, тем более они особо проблему не решают, а только ради того, чтобы выбросом исключения всё не падало.
Saboteur, ну да, поэтому просто ограничиваем символы ASCII и считаем до 255, либо чуть посложнее - считаем ASCII и не-ASCII помноженные на N. А тут фигня полная...
Алгоритм работает правильно, тут как бы очевидно, он простой как пень. Я методом научного тыка установил, что 234 символа ASCII, не больше. С криллицей - не понятно пока, там ещё проблемы с кодировкой from QString to std::filesystem::path. Это я чуть позже исправлю и узнаю, надеюсь. Лучше бы, когнечно, СУБД использовать, а не фигнёй маяться этой.
Да, опыт то можно на любом г****е получить, вот только он будет неприятный.
Saboteur, Там у Виндовз полная фигня, ASCII помещается 234, а не ASCII - на кофейной гуще гадать только. Хотя я не знаю, может быть это так только на Windows 10, а на 7 будет как-то ещё.
Как же я ненавижу Виндовз, постоянно гемор с кодировками, ABI и прочей фигнёй. Например, у меня почему-то OpenCV 3.4.0 не линкуется, хотя я его собрал, но нет, хрен там, он бинарно несовместим из-за какой-то тупой ошибки CMake'a. Короче, бесконечное гадагние, тогда как на Linux всё чётко, внятно и понятно.
Ну вот, а пользователю нужно ведь через проводник работать, так что в любом случае. Но тут всё странно. Видимо ограничение не 255, а меньше. На Линуксе сам тестировал, ровно 255, если испольщзовать ASCII, а кириллица уже 2 байта, там ведь UTF-8.
В Линуксе, кстати все работает, там utf-8, и кириллица занимает 2 байта, поэтому если ограничиться ASCII, то ровно 255, в противном случае падает с ошибкой.
Переименовать пользователя. Я уже несколько раз объяснил. От имени пользователя запускаются демоны и приложения, может быть ещё что-то, и их нельзя убить, пока он в системе. А часть системы запускается от имени этого пользователя. Там можно поменять пользователя, от имени которого будут запускаться процессы, которые нельзя убить. Это нужно чтобы его можно было переименовать.
Adamos, на самой системе, при попытке сменить имя пользователя, вылетатет, что нельзя, т.к. запущено процесс с таким-то кодом. Попытки убить его ничего не дают, т.к. это системные у демоны или вроде того. Я эту проблему как-то обходил. Я менял пользователя от имени которого запускается система и демоны.