GrdFormatMessage + GrdLNG.Russian = "?????"

После вызова  GrdApi.GrdFormatMessage(nRet, GrdLNG.Russian, out msg)
при nRet == Guardant.GrdE.DongleNotFound
в msg оказывается "???? ? ????????? ????????? ?????? ?? ??????".

GrdApi.PrintResult(...) делает то же самое.

Что я неправильно делаю?

Re: GrdFormatMessage + GrdLNG.Russian = "?????"

C# .Net Framework 2.0

Re: GrdFormatMessage + GrdLNG.Russian = "?????"

Здравствуйте.

mamitko пишет:

После вызова  GrdApi.GrdFormatMessage(nRet, GrdLNG.Russian, out msg)
при nRet == Guardant.GrdE.DongleNotFound
в msg оказывается "???? ? ????????? ????????? ?????? ?? ??????".

Для функции GrdFormatMessage параметр идентификатора языка должен указываться как GrdLng.ENG или GrdLng.RUS.

mamitko пишет:

GrdApi.PrintResult(...) делает то же самое.
Что я неправильно делаю?

Каким будет результат, если попробовать использовать английский (GrdLNG.English) язык вывода сообщений?

(2011-11-01 10:18:40 отредактировано mamitko)

Re: GrdFormatMessage + GrdLNG.Russian = "?????"

Антон Тихиенко пишет:

Для функции GrdFormatMessage параметр идентификатора языка должен указываться как GrdLng.ENG или GrdLng.RUS.

В той сборке API, которую я использую, у метода GrdFormatMessage второй параметр имеет тип GrdLNG (не GrdLng).
У перечисления GrdLNG два значения: GrdLNG.English и GrdLNG.Russian (не GrdLng.ENG и GrdLng.RUS).
Я что-то не то подключил и использую?

Антон Тихиенко пишет:

Каким будет результат, если попробовать использовать английский (GrdLNG.English) язык вывода сообщений?

GrdE.DongleNotFound --> Dongle with specified search conditions not found

Re: GrdFormatMessage + GrdLNG.Russian = "?????"

mamitko пишет:

В той сборке API, которую я использую, у метода GrdFormatMessage второй параметр имеет тип GrdLNG (не GrdLng).
У перечисления GrdLNG два значения: GrdLNG.English и GrdLNG.Russian (не GrdLng.ENG и GrdLng.RUS).
Я что-то не то подключил и использую?

В данном случае нужно обратить внимание на то, что данные функции (GrdApi.GrdFormatMessage и GrdApi.PrintResult) формируют в качестве сообщения строку символов в ANSI - кодировке, а консоль (или любой другой интерфейс вывода) может по умолчанию использовать другую кодировку (например, DOS в командной строке Windows).
Таким образом, необходимо конвертировать строку содержащую сообщение в нужный формат для конкретного интерфейса вывода.

(2011-11-02 17:50:06 отредактировано mamitko)

Re: GrdFormatMessage + GrdLNG.Russian = "?????"

Антон Тихиенко пишет:

ANSI

GrdApi.GrdFormatMessage и GrdApi.PrintResult возвращают System.String, которая Represents text as a series of Unicode characters.
http://msdn.microsoft.com/ru-ru/library … tring.aspx

У вас (Вас) есть рецепт, как из того, что возвращают GrdApi.PrintResult и GrdApi.GrdFormatMessage достать текст с русскими буквами?
Это вообще возможно? Или нужно перед вызовом функции установить правильный язык текущей локали?

Или может быть есть шанс, что Вы были правы в своем первом ответе?