Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.36.203] |
|
Сообщ.
#1
,
|
|
|
Добрый день. Хотелось бы получить помощи в компиляции приложения. По задумке разработчика оно должно конвертировать файлы sxb в xml и должна быть возможность преобразовать обратно. Но при попытке компиляции мной через Visual Studio 2013 выдает ошибки. В Debug режиме можно создать приложение, но оно не хочет обратно из xml в sxb запаковывать, точнее это делает, но пустым файлом. Может ли кто либо подправить или подсказать что не так?) Будем тогда сидеть и дальше разбираться. Было бы очень любезно с вашей стороны, если кто-нибудь смог сделать Release и выложить для скачивания:)
https://yadi.sk/d/Xsslz0OT3Lspy5 |
Сообщ.
#2
,
|
|
|
2017-я тоже не собрала. В библиотеках libcurl.lib и libcurld.lib связи с RTL не той версии, отсутствуют нужные символы.
Дома есть 2013-ая, но до дому часов 6. |
Сообщ.
#3
,
|
|
|
Спасибо что посмотрели, я не тороплюсь и подожду пока вы попробуете в 2013 собрать)
|
Сообщ.
#4
,
|
|
|
Подобная же хрень.
В общем, без пересборки библиотек я это не слинкую. Подозреваю, что там либо использовались нестандартные библиотеки, либо не те сервиспаки. |
Сообщ.
#5
,
|
|
|
Цитата lemmur @ sxb А что это за формат, есть описание? |
Сообщ.
#6
,
|
|
|
Цитата JoeUser @ Цитата lemmur @ sxb А что это за формат, есть описание? Вообще в интернете ассоциируется с SalesLogix VB Form/Script Transfer (Best Software). В моем случае в нём хранятся данные Локализации игрового клиента на 10 языках.При попытке загрузиться в клиенте с .xml (разумеется переписав расширения считываемых файлов с .sxb в .xml) происходит его закрытие с ошибкой, поэтому нужно запаковать обратно в этот формат) В интернете об этом мало информации, но хотелось бы найти решение. Зачем так было запаковывать не особо важные файлы не представляю. |
Сообщ.
#7
,
|
|
|
Интересно, а как ты собираешься писать конвертер, не зная спецификации выходного формата?
Найдешь (скинешь) спецификацию - можно говорить дальше, а иначе тупиковое направление. |
Сообщ.
#8
,
|
|
|
Цитата JoeUser @ Интересно, а как ты собираешься писать конвертер, не зная спецификации выходного формата? Найдешь (скинешь) спецификацию - можно говорить дальше, а иначе тупиковое направление. Вот человек в этом разбирался. Делал - выложил конвертер - что-то релизнуть его не получается используя те библиотеки, что он предоставил. В Debug версии получается только разобрать и иметь на выходе что-то типа такого: <?xml version = "1.0"?> <!-- type --> <!-- typename --> <!-- key --> <!-- korean --> <!-- jpn --> <!-- chinese --> <!-- eng --> <!-- fra --> <!-- deu --> <!-- rus --> <blocks> <keys num_keys="10" key1="type" key2="typename" key3="key" key4="korean" key5="jpn" key6="chinese" key7="eng" key8="fra" key9="deu" key10="rus" /> <block key="am_co_gr_001_10_Name" korean="벌써 10렙" /> <block key="am_co_gr_001_10_Description" korean="10레벨 달성" /> <block key="am_co_gr_001_10_condition_0" korean="10레벨 달성" /> <block key="am_co_gr_001_20_Name" korean="지원아이템을 받아, 야타이만에 도전하라." /> <block key="am_co_gr_001_20_Description" korean="20레벨 달성" /> <block key="am_co_gr_001_20_condition_0" korean="20레벨 달성" /> Но в проекте также прописана возможность сборки, но к сожалению при сборке не захватываются блоки, только type typename key korean jpn chinese eng fra deu rus . Его объяснения как разложить файл. Давайте разложим структуру этого файла по полочкам. Начнем с заголовка файла: - Переменная в 2 байта - количество языков в файле, т.е. указывает сколько раз надо прочитать следующий блок: Код (Text): Неизвестная переменная, которая равна одному байту и всегда значение 1; 1 байт содержащий длину далее идущих символов (н-р. 3, 'key'. 6,'korean'); сама строка. Тут заголовок заканчивается и начинаются оффсеты. Стоит учитывать, что для SXB файлов смещения в файле считаются 1 к 1 (ASCII), а на самом деле 1 к 2 (UNICODE). 2 байта - количество блоков в файле. Я считаю блок как все переводы одной строки, т.е. этот параметр умножаем на количество языков. Н-р.: языков у нас 5. Значит получив значение 0x0506 * 5 = 6430 офсетов. Каждый офсет весит 4 байта, а значит надо прочитать из файла 6430 * 4 = 25720 байт. После офсетов идет 4 байта указывающие на размер блока данных. Сам блок данных разбирается легко, т.к. у нас уже есть вся информация по нему. Н-р.: чтобы получить ключ, нам надо из второго офсета вычесть первый и умножить на 2. Так мы вырежем только ключ в формате UNICODE. |
Сообщ.
#9
,
|
|
|
Приаттач архив с примером файла, ну или скинь куда-нить и линк дай.
Беглое гугление привело меня вот к этому - https://github.com/Saleslogix/SLXMigration/...les/Widgets.sxb но внутри какая-то невменяемая дичь. Или я другое что-то смотрел. |
Сообщ.
#10
,
|
|
|
Цитата JoeUser @ Приаттач архив с примером файла, ну или скинь куда-нить и линк дай. Беглое гугление привело меня вот к этому - https://github.com/Saleslogix/SLXMigration/...les/Widgets.sxb но внутри какая-то невменяемая дичь. Или я другое что-то смотрел. Вот пример файла для разбора. Если мы его разбираем в первом посте в дебаг компильнутым проектом то получаем такой xml. Прикреплённый файлlocalstringdata_actionlist.xml.zip (1,87 Кбайт, скачиваний: 100) Прикреплённый файлlocalstringdata_actionlist.zip (8,08 Кбайт, скачиваний: 94) |
Сообщ.
#11
,
|
|
|
Скрытый текст Вечерком постараюсь глянуть |
Сообщ.
#12
,
|
|
|
Лирика
Цитата lemmur @ Переменная в 2 байта - количество языков в файле Беглый просмотр уже (еще не начав программить!) обозначил косяк! Смотри: 1) "количество языков" - в предоставленном файле их, по утверждению 10 2) Ищем - korean, jpn, chinese, eng, fra, du, ru Итого 7. А языков 10. Цитата lemmur @ 1 байт содержащий длину далее идущих символов (н-р. 3, 'key'. 6,'korean'); сама строка. И? И что это? и т.д. Я считаю, что подготовка был сырая! Надо составить табличное представление формата, переменное количество полей обозначить итемеом с "...". А потом уже начинать кодить. Советы 1) Зачем XML? Я так понял - вам надо "править" файлы? Откройте для себя термины "сериализация/десериализация". Можно просто скидывать последовательно, построчно данные в виде "ключ : значение" в текстовом представлении. Скидывать проще, и считывать проще. В ручной правке не запутаетесь. Нафик XML, нафик парсинг. 2) По коду я увидел обращение к переводчику гугла. Отделите мухи от котлет. Обработка не обязана быть в виде одного процесса. А если гугыль затупит, станет недоступным? Разделите задачи, а-ля: парсинг и сериализация, выделение строк для перевода, перевод, десериализация в итоговые файлы. С контролем исполнения на каждом этапе. Возможно сэкономите время и на отладке, и на исполнении - появится возможность не начинать с нуля, а начинать с несделанного/или обломившегося. 3) Избегайте сторонних либ, с которыми не имели дело сами, и которые совсем уж мало известные. Я о подобных "config4cpp". 4) Возьмите фрэймворк а-ля Qt, там вкусняшек масса - и все компилируется и работает |
Сообщ.
#13
,
|
|
|
Цитата JoeUser @ Лирика Цитата lemmur @ Переменная в 2 байта - количество языков в файле Беглый просмотр уже (еще не начав программить!) обозначил косяк! Смотри: 1) "количество языков" - в предоставленном файле их, по утверждению 10 2) Ищем - korean, jpn, chinese, eng, fra, du, ru Итого 7. А языков 10. Цитата lemmur @ 1 байт содержащий длину далее идущих символов (н-р. 3, 'key'. 6,'korean'); сама строка. И? И что это? и т.д. Я считаю, что подготовка был сырая! Надо составить табличное представление формата, переменной количество полей обозначить итемеом с "...". А потом уже начинать кодить. Советы 1) Зачем XML? Я так понял - вам надо "править" файлы? Откройте для себя термины "сериализация/десериализация". Можно просто скидывать последовательно, построчно данные в виде "ключ : значение" в текстовом представлении. Скидывать проще, и считывать проще. В ручной правке не запутаетесь. Нафик XML, нафик парсинг. 2) По коду я увидел обращение к переводчику гугла. Отделите мухи от котлет. Обработка не обязана быть в виде одного процесса. А если гугыль затупит, станет недоступным? Разделите задачи, а-ля: парсинг и сериализация, выделение строк для перевода, перевод, десериализация в итоговые файлы. С контролем исполнения на каждом этапе. Возможно сэкономите время и на отладке, и на исполнении - появится возможность не начинать с нуля, а начинать с несделанного/или обломившегося. 3) Избегайте сторонних либ, с которыми не имели дело сами, и которые совсем уж мало известные. Я о подобных "config4cpp". 4) Возьмите фрэймворк а-ля Qt, там вкусняшек масса - и все компилируется и работает 3 года назад это было актуально и верно, сама игра не стоит на месте и развивается, вот и выходит что видны сразу косяки |
Сообщ.
#14
,
|
|
|
ЗЫ: А по большому счету, особенное если таких файлов оч много, я бы подошел по другому принципу - начал бы с обратного - написания десериализатора. Берем и составляем свой "сценарий", на основе которого десериализатор выдает нужные файлы. Осталось:
1) Распотрошить исходные файлы в "сценарии" 2) Перевести в нужные языки 3) Отредактировать "сценарии" 4) Сформировать нужные sxb-файлы Профит. Добавлено Цитата lemmur @ сама игра не стоит на месте и развивается Тем более!!! В динамике не байты-биты надо искать и отслеживать, а уйти в обобщение. Найти главное, и только потом уже отслеживать мелочи. |