Guest jkot Posted February 21, 2010 Share Posted February 21, 2010 Можно ли обьединить 2 строки? И если можно, то как?) Quote Link to comment Share on other sites More sharing options...
kosh Posted February 22, 2010 Share Posted February 22, 2010 Code: wstring_результат = wstring_переменная .. wstring_переменнаяв луа обеденение это ".." Quote Link to comment Share on other sites More sharing options...
Guest jkot Posted February 22, 2010 Share Posted February 22, 2010 Спасибо! А то я через + всё пытался) Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted February 22, 2010 Share Posted February 22, 2010 нет, wstring нельзя так объединять, т.к. это userdata по моему должна быть специальная команда, которая возвращает объединенную строку... но я не уверен Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted February 22, 2010 Share Posted February 22, 2010 Столкнулся с проблемой Есть перменная типа WString пытаюсь сравнить с ней какоелибо значение - результат всегда отрецательный, кто подскажет что делать ? Пример Code: SpellInfo.Name -- WString name -- Строка заданная "text" if SpellInfo.Name == name then ....... else ........ end Пробовал конвертировать с помощью debugCommon.ToWString( "text" ) - вообще не работает, видимо отклучена дебаг библиотека. Пробовал tostring( "text" ) тоже самое. Есть идеи что может быть не так ? Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted February 22, 2010 Share Posted February 22, 2010 тоже самое. нельзя просто сравнивать wstring. темболее с другими данными. для сравнения 2х wstring используй common.CompareWString( wstring1, wstring2 ) если строка string у тебя постоянна, то можешь ее записать в текстовом файле и сохраниьт в кодировке UTF-16LE подключить этот файл к себе: в xdb прописать <TextFileRef href="FILENAME.txt" /> и из скрипта получать уже local text = GetText( "FILENAME" ) и уже text будет иметь тип wstring и уже сравнивай через CompareWString примерно так... если что непонятно смотри примеры, смотри апи, мож что накопаешь расскажешь. Как сравнивать разные типы данных я хз Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted February 22, 2010 Share Posted February 22, 2010 кстати, "объединение"wstring тем же способом производится в txt пишем: Code: <header color="0xFFCC1111" alignx="center" shadow="1"><rs class="class"> <r name="key"/><r name="value"/></rs></header> дальше уже устанавливаем готовой строке нужные значение через виджет: Code: valuedText:SetVal( "key", wstring1 ) valuedText:SetVal( "value", wstring2 ) Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted February 22, 2010 Share Posted February 22, 2010 Блин писец просто работа с текстом и контролами через одно место. Ктонить может полный пример выложить - 1. Вывод сообшения в чат 2. Создать окошко и выводить туда текст в TextView Ниваловские примеры пестрят вот такими констукциями debugCommon.ToWString( "Hi, all." ) Когда пишеш в коде - это не пашет ! Вот я логики ен вижу нафига это отрубать то ? Зачем! Нада писать нивалу чтоб врубили возможность вот так задавать WString debugCommon.ToWString( "Hi, all." ) Quote Link to comment Share on other sites More sharing options...
Mankubus Posted February 22, 2010 Share Posted February 22, 2010 debugCommon не работает. 1. group.ChatSay( ... ) строка должна быть Wstring 2. пока не разбирался Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted February 22, 2010 Share Posted February 22, 2010 Самая большая проблема иммено в Wstring *)))) Как ее получить нормальным человеческим способом а не через ж... , тоесть файл *) Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted February 22, 2010 Share Posted February 22, 2010 Quote: Как ее получить нормальным человеческим способом никак. как они их обзывают - это "локализованная строка" пишешь набор необходимых строк в txt файлах. строк, заготофок форматов строк...DebugCommon, я уже говорил, отключено с начала ОБТ (или почти с самого начала. Почему в API все примеры даны с этой конструкцией - я не знаю. видать на столько заняты что сами используют старый API... А нам дали именно свой рабочий, немного лишь урезав и дополнив аддон-функциями. Quote Link to comment Share on other sites More sharing options...
Guest jkot Posted February 23, 2010 Share Posted February 23, 2010 Valltron Чуть более подробно можно? Как потом "загрузить" этот txt , что-бы с ним потом работать как с valuedText?? ЗЫ: цитата из API: "Правила подстановки одного ValuedText в другой см. в http://intra/wiki/engine/ValuedText" Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted February 23, 2010 Share Posted February 23, 2010 я говорил про wstring, ValuedText это другое. насчет Valued... можно создать новый экземпляр, установить ему формат из виджета (или, например из <texts href="" />, через gettext), установить класс, это то что у тебя в тэге <rs class=...> определено, и задать значения параметрам, то что в <r name=...>: Code: local valuedText = common.CreateValuedText() valuedText:SetFormat( mywidget:gettext( "textname" ) ) valuedText:SetClassVal( "color_code", "log_yellow" ) valuedText:SetVal( "value", params.name ) и дальше им пользоваться как тебе нужно. ах, да, это все теоретически выше писал. код не проверял в работе. сам подправишь что не так Quote Link to comment Share on other sites More sharing options...
Guest kst Posted February 27, 2010 Share Posted February 27, 2010 Quote: если строка string у тебя постоянна, то можешь ее записать в текстовом файле и сохраниьт в кодировке UTF-16LEподключить этот файл к себе: в xdb прописать и из скрипта получать уже local text = GetText( "FILENAME" ) а можно по-подробнее о подключении текстового файла и получении строки типа WString из него?в каком xdb надо прописать и как именно? и что собой представляет "FILENAME" ?я пробовал делать так:в файле AddonDesc.(UIAddon).xdb прописал среди прочего следующее:Code: <texts href="Texts.(UIRelatedTexts).xdb#xpointer(/UIRelatedTexts)" /> создал файл Texts.(UIRelatedTexts).xdb с таким содержимым:Code: <?xml version="1.0" encoding="UTF-8" ?><UIRelatedTexts> <items> <Item> <name>message1</name> <resource href="message1.txt" /> </Item> <Item> <name>message2</name> <resource href="message2.txt" /> </Item> </items></UIRelatedTexts> соответственно, сделал 2 текстовых файла в юникод-кодировке (message1.txt и message2.txt)в lua-скрипте следующая конструкция:Code: local msg1 = GetText( "message1" ) local msg2 = GetText( "message2" ) LogInfo( "parameters: ", msg1, " *** ", msg2 ) group.ChatWhisper( object.GetName( avatar.GetId() ), msg1 ) то есть по идее, я должен получить 2 строки из файлов, записать их в лог, а также первую строку отправить себе в ПМ. но ничего этого не происходит в чем я ошибся? ( все созданные файлы находятся в одном каталоге - корне аддона ) Quote Link to comment Share on other sites More sharing options...
ramirez Posted March 5, 2010 Share Posted March 5, 2010 Code: <header color="0xFFCC1111" alignx="center" shadow="1"><rs class="class"> <r name="key"/><r name="value"/></rs></header> Скажи, а там где ты добыл этот текст, еще такие есть? И если есть, тогда расскажи уж, как и где добыл. Это ключевая информация для правильной работы с текстами, в выданной документации об этом только пол-намека.Upd. А, в примерах кое-что есть, хотя и не такое. Quote Link to comment Share on other sites More sharing options...
SLA Posted March 5, 2010 Share Posted March 5, 2010 Имхо, вместо этого: Code: local msg1 = GetText( "message1" ) нужно так: Code: local msg1 = common.GetAddonRelatedText( "message1" ) Так должно работать. Quote Link to comment Share on other sites More sharing options...
Reva Posted March 7, 2010 Share Posted March 7, 2010 local msg1 = common.GetAddonRelatedText(что тут должно быть?) А конкретней - Как в msg1 получить строчку : "Hello" Да так , чтобы эта строчка давала true на common.IsWString(msg1). Выложите пример пожалуста аддона. Где писалось бы в лог msg1 = "Hello" И Group.ChatSay(msg1) тоже бы чтобы писал>)) Извините , возможно все было уже написано, но нифига не получается. Quote Link to comment Share on other sites More sharing options...
ramirez Posted March 8, 2010 Share Posted March 8, 2010 Не GetText() надо, а common.GetAddonRelatedText(). GetText'а не существует. В Texts.(UIRelatedTexts).xdb поле "name" - любая строка, не обязательно имя файла. По этой строке и добываешь этот текст. Quote Link to comment Share on other sites More sharing options...
Guest kst Posted March 8, 2010 Share Posted March 8, 2010 Quote: local msg1 = common.GetAddonRelatedText(что тут должно быть?) Здесь должен быть идентификатор текстового ресурса, т.е. некое имя, присвоенное текстовому файлу (в кодировке Юникод) с нужной строкой. Это имя, а также путь к файлу задаются в файле .xdb (описателе текстовых ресурсов), ссылка на этот .xdb файл находится в файле-описателе аддона, в теге "texts".Quote: Выложите пример пожалуста аддона. Где писалось бы в лог msg1 = "Hello"И Group.ChatSay(msg1) тоже бы чтобы писал>)) Прикладываю пример такого аддона File: HelloWorld.zip Quote Link to comment Share on other sites More sharing options...
Reva Posted March 8, 2010 Share Posted March 8, 2010 Благодарю. Лишние 2 часа мозговыноса не потревожат меня > ) Quote Link to comment Share on other sites More sharing options...
Reva Posted March 8, 2010 Share Posted March 8, 2010 Еще вопрос msg1 <--- Wstring msg2 <--- Wstring local Msg = msg1 .. msg2 не пашет точно) А как)) Quote Link to comment Share on other sites More sharing options...
Guest kst Posted March 9, 2010 Share Posted March 9, 2010 а никак "объединять" объекты типа WString можно только на этапе вывода, т.е. в том месте где их надо отображать (лог-файл, виджет TextView и т.п.) msg1, msg2, ..., msgN - это как набор кубиков из которых можно путем перестановки складывать разные фразы, но при этом разломать кубик или скрепить между собой 2 кубика нельзя, не предусмотрено у них креплений Quote Link to comment Share on other sites More sharing options...
merlok Posted March 9, 2010 Share Posted March 9, 2010 минимальный аддон или посмотрите там на второй странице такуюже тему - сцылко похоже покоцанное Quote Link to comment Share on other sites More sharing options...
merlok Posted March 9, 2010 Share Posted March 9, 2010 гдето видел в ихнем коде... слету не нашел надо поискать в ихних старых исходниках игры Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted March 9, 2010 Share Posted March 9, 2010 Первое что приходить на ум - сделать ValuedText - сложить в него WString-i и потом взять скомпоновоннаую строку GetText -ом. Шас попробую сам на практике .... отпишу что вышло Quote Link to comment Share on other sites More sharing options...
Recommended Posts