![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вывести сообщение на ангилском? (FormatMessage) [D6, WinXP]
17Landgraf © (2006-08-01 18:37:00)Добрый день! Подскажите, пожалуйста, как добиться, чтобы ниже приведенный код, показывал сообщение на англиском языке? На данный момент сообщение выводится на русском языке.
function CodeOfError(ErrorCode: Integer): string;
var
Len: Integer;
Buffer: array[0..255] of Char;
begin
Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0 , Buffer,
SizeOf(Buffer), nil);
while (Len > 0) and (Buffer[Len - 1] in [ #0..#32, '.']) do Dec(Len);
SetString(Result, Buffer, Len);
end;
ancara (2006-08-03 23:06:00) [1]Удалено модератором
Примечание: Offtopic
sniknik (2006-08-03 11:13:00) [2]в смысле, когда поверх русской, надо доставлять английский интефейс.
sniknik (2006-08-03 11:11:00) [3]> Но нет безвыходных ситуаций, будем искать! Может ктонить из жителей славного форума сталкивался с такой задачей ;-)
легко, хотя с подобной задачей и не сталкивался. ставь английскую винду, после на нее MUI (мультиленгвиже чегото там ;), и у тебя в ней будет 2 типа ресурсов на английском и том какой вариант в MUI выбереш...
теоретически MUI можно поставить и поверх руской винды... по идее должно сработать, но вот пробовать никогда не приходилось.
Ketmar (2006-08-02 10:50:00) [4]> [6] 17Landgraf (02.08.06 10:44)
а можно вообще end user'у сообщения об ошибках винды не показывать. такие сообщения обычно пишутся в лог, который отправляют разработчику. а юзер пусть видит нечто вроде "ашыпка! пашли письмо на деревню!"
17Landgraf (2006-08-02 10:44:00) [5]Удалено модератором
medved_68 (2006-08-02 09:55:00) [6]
> 17Landgraf
> Но нет безвыходных ситуаций
Это точно. А что мешает по коду ошибки формировать свое сообщениеи выводить???? Можно хоть на ненецком автономном:)))
З.Ы. А почему на английском??? Чтобы наш пользователь проникся духом уважения к зарубежному программингу???
17Landgraf (2006-08-01 19:28:00) [7]Обидно конечно :( Но нет безвыходных ситуаций, будем искать! Может ктонить из жителей славного форума сталкивался с такой задачей ;-)
Ketmar (2006-08-01 19:18:00) [8]а вот так и применить. идентификатор языка -- просто число. $409 -- американский английский. $419 -- русский. $422 -- украинский. %-)
и искать их не надо, их сама винда знает. %-)
только всё равно ничего не выйдет -- у локализованых виндов нет ресурсов с сообщениями для других языков. обычно только для языка, на который локализовано.
17Landgraf (2006-08-01 19:06:00) [9]У FormatMessage есть параметр, который вроде, как отвечает за используемый, при выводе сообщения язык.
DWORD FormatMessage(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId,
LPTSTR lpBuffer,
DWORD nSize,
va_list* Arguments
);
На MSDN-е нашел список языковых идентификаторов - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_238z.asp
А вот как применить эти идентификаторы? Например, есть след. идентификатор:
Identifier
0x0809 English (United Kingdom) en-GB Latn 1252 ENG
Ketmar (2006-08-01 18:52:00) [10]поставить английскую винду?