GRuSHa Posted February 7, 2015 Share Posted February 7, 2015 Доброго времени суток всем. Столкнулся с проблемой, нужно проверять имя шарда и в зависимости от имени выводить сообщение, но не получается сравнить строки с помощью == , перевожу обе строки в WString и всёравно не сравнивает, что посоветуете? Quote Link to comment Share on other sites More sharing options...
Slashuur Posted February 7, 2015 Share Posted February 7, 2015 Если хочется сравнивать через ==, то переводить надо в обычные строки и сравнивать их, а не WString Если хочется сравнивать именно WString, то для этого есть функции: http://alloder.pro/md/LuaApi/FunctionCompareWString.html http://alloder.pro/md/LuaApi/FunctionCompareWStringEx.html Quote Link to comment Share on other sites More sharing options...
GRuSHa Posted February 7, 2015 Author Share Posted February 7, 2015 оно не сравнивает ни в обычных строках ни в WString Error: addon Addon: func: ToWString, field, line: -1, defined: C, line: -1, [C] Error: addon Addon: func: OnGetShard, global, line: 33, defined: Lua, line: 23, [string "Mods/Addons/Addon/scripts/AddonScript.lua"] Error: addon Addon: func: Init, global, line: 96, defined: Lua, line: 91, [string "Mods/Addons/Addon/scripts/AddonScript.lua"] Error: addon Addon: func: ?, ?, line: 112, defined: main, line: 0, [string "Mods/Addons/Addon/scripts/Addon.lua"] Error: addon Addon: Game::LuaDebugToWString: param 1 not a class nstl::basic_string<char> (type: WString), details: int __cdecl Game::LuaDebugToWString(struct lua_State *) Quote Link to comment Share on other sites More sharing options...
ramirez Posted February 7, 2015 Share Posted February 7, 2015 if common.CompareWString( mission.GetShardName(), userMods.ToWString( "Нужный шард" ) ) ~= 0 then --- some code end if userMods.FromWString( mission.GetShardName() ) ~= "Нужный шард" then --- some code end 1 Quote Link to comment Share on other sites More sharing options...
GRuSHa Posted February 7, 2015 Author Share Posted February 7, 2015 спасибо Quote Link to comment Share on other sites More sharing options...
Setras Posted February 7, 2015 Share Posted February 7, 2015 оно не сравнивает ни в обычных строках ни в WString Error: addon Addon: Game::LuaDebugToWString: param 1 not a class nstl::basic_string<char> (type: WString), details: int __cdecl Game::LuaDebugToWString(struct lua_State *) Передаваемый в функцию ToWString параметр 1 не "nstl::basic_string<char>", а WString. Т.е. вместо обычной строки (string) вы в функуию "превратить обычную строку в WideString" передаете WideString, в то время как функции нужно передать обычную строку. В описании функции mission.GetShardName() написано что функция возвращает WString: -- возвращаемое значение: WString - локализованное имя шарда А в коде у вас наверняка используется string вроде "Ожившие Легенды". Соответственно чтобы сравнить string и WString их нужно привести к одному типу. Т.е. либо сконвертировать string в WString, либо наоборот. П.С. И WString не сравниваются оператором ==, для них есть специальная функция. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts