Razi Опубликовано 1 июня, 2019 Поделиться Опубликовано 1 июня, 2019 (изменено) Добрый день. Можно CE научить понимать русские буквы в имени файла или в пути? Например: сделана программа, которая открывает файлы для редактирования, но если в названии файла есть русские буквы или в пути к файлу, тогда СЕ при попытке открыть этот файл говорит, что такого файла нет. Можно с помощью языка Луа это исправить? Изменено 1 июня, 2019 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 2 июня, 2019 Поделиться Опубликовано 2 июня, 2019 А ты пробовал преобразовать путь в UTF8? У CE есть такая функция преобразования Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 июня, 2019 Автор Поделиться Опубликовано 2 июня, 2019 (изменено) 3 часа назад, MasterGH сказал: А ты пробовал преобразовать путь в UTF8? У CE есть такая функция преобразования Эта функция ansiToUtf8(string) ? Куда ее надо вставить? Спойлер function fsize(fl) fl, err = io.open(fl, "r") if fl then local current = fl:seek() local size = fl:seek("end") fl:seek("set", current) fl:close() size = round(size, 2) stringsize = string.format(size) end return stringsize end function openFile(fs) load_dialog = createOpenDialog(self) load_dialog.InitalDir = os.getenv('%USERPROFILE%') load_dialog.execute() local path = load_dialog.FileName --path = ansiToUtf8(path) fileSize = fsize(path) fileSize = tonumber(fileSize) if fileSize == fs then openFileAsProcess(path, r) end end Изменено 2 июня, 2019 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 2 июня, 2019 Поделиться Опубликовано 2 июня, 2019 Вот так заработало (из utf8 в ansi) Если не будет работать тогда проверить путь. local pathRU = "C:\\Текстовый фaйл.txt" local utf8Path = utf8ToAnsi(pathRU) local file, error = io.open(utf8Path) print (file, error) Одинарные символы "\" заменить на "\\". Если и это не поможет, то в текстовым файле (справочнике CE Lua) есть классы для работы с файлами на чтение и запись. Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 июня, 2019 Автор Поделиться Опубликовано 2 июня, 2019 (изменено) 1 час назад, MasterGH сказал: local utf8Path = utf8ToAnsi(pathRU) Открывает файл, но не считывает значения с смещений. Значения равны nil. 1 час назад, MasterGH сказал: в текстовым файле (справочнике CE Lua) есть классы для работы с файлами на чтение и запись. Там есть readRegionFromFile, writeRegionToFile Изменено 2 июня, 2019 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 2 июня, 2019 Поделиться Опубликовано 2 июня, 2019 4 часа назад, Razi сказал: utf8Path Я перепутал название переменной) Так все же работает. Пошаговый Lua отладчик в помощь Спойлер Спойлер function round(x) return x>=0 and math.floor(x+0.5) or math.ceil(x-0.5) end function fsize(fl) fl, err = io.open(fl, "r") if fl then local current = fl:seek() local size = fl:seek("end") fl:seek("set", current) fl:close() size = round(size, 2) stringsize = string.format(size) end return stringsize end function openFile(fs) load_dialog = createOpenDialog(self) load_dialog.InitalDir = os.getenv('%USERPROFILE%') load_dialog.execute() local path = load_dialog.FileName path = utf8ToAnsi(path) fileSize = fsize(path) if fileSize == nil then print('fileSize is nil') return end fileSize = tonumber(fileSize) print(fileSize) if fileSize == fs then openFileAsProcess(path, r) print('openFileAsProcess') end end openFile(100) Вообще не очень понятно, зачем открывать файл как процесс, подсчитав его размер. Я бы эту строчку закомментировал. Если надо открывать файл редактором, то можно текстовым или своим на Lua сделанным Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 2 июня, 2019 Поделиться Опубликовано 2 июня, 2019 1 час назад, MasterGH сказал: Вообще не очень понятно, зачем открывать файл как процесс, Можно так например пропатчить какой нибудь exe файл и сохранить потом, при этом используя функции для работы с памятью процесса, очень удобно по моему ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 3 июня, 2019 Автор Поделиться Опубликовано 3 июня, 2019 (изменено) 15 часов назад, MasterGH сказал: Вообще не очень понятно, зачем открывать файл как процесс, подсчитав его размер. Это редактор магазина игры: Shop Editor. Достаем спец. прогой файл из диска Playstation 1. Открываем нашей программой, редактируем все что нам нужно и сохраняем. Размер файла подсчитывается, потому что у Региона Pal и региона NTSC файлы идентичны, но имеют разный размер и соответственно значения находятся по разным смещениям. Как процесс открывается, потому что на форуме CE нашел только одну тему как открыть файл. Нужно открыть файл и помнить все сделанные изменения, до записи значений в файл. И потом только один раз нажать на Apply Changes. Такая программа есть для NTSC и PC версий игры. Сделал такую же программу для Pal версии и заодно для NTSC и PC версий игры. Скриншоты: Спойлер MasterGH : Да и еще раз хотел сказать спасибо, за помощь в создании трейнера в прошлом. Скриншоты: Спойлер Изменено 3 июня, 2019 пользователем Razi 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения