Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 11:58   #1
limansky
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 14
По умолчанию Как переключить клавиатуру на португальский (Португалия)?

При использовании
LoadKeyboardLayout('00000416',0)
получаю португальский (Бразилия)
Как получить португальский (Португалия)?
limansky вне форума Ответить с цитированием
Старый 08.05.2011, 12:31   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Вы можете объяснить, как можно найти 00000416, но не найти это?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.05.2011, 12:44   #3
limansky
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Вы можете объяснить, как можно найти 00000416, но не найти это?
Спасибо, сделал. Код 816
Я, собственно говоря не программист. Лишь делаю кое-что для изучения английского:
http://rutracker.org/forum/viewtopic.php?t=3524325
А тут попросили сделать тоже самое для португальского.
Спасибо ещё раз.
limansky вне форума Ответить с цитированием
Старый 08.05.2011, 13:13   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Использовать жёстко зашитые константы не очень хорошо.

Вот так правильнее:

Код:
var
  LanguageID: LANGID;
  KLID: Cardinal;
  KLIDStr: String;
begin
  LanguageID := MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE);
  KLID       := MakeLong(LanguageID, 0);
  KLIDStr    := IntToHex(KLID, SizeOf(KLID) * 2);

  if LoadKeyboardLayout(PChar(KLIDStr), 0) <> 0 then
    // ...
end;
На случай, если в вашей Delphi нет определений:

Код:
type
  LANGID = Word;

const
  LANG_PORTUGUESE                      = $16;
  SUBLANG_PORTUGUESE                   = $02;    { Portuguese }
  SUBLANG_PORTUGUESE_BRAZILIAN         = $01;    { Portuguese (Brazilian) }

function MAKELANGID(p, s: WORD): WORD;
begin
  Result := WORD(s shl 10) or p;
end;

function MakeLong(A, B: Word): Longint;
begin
  Result := A or B shl 16;
end;
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.05.2011, 13:44   #5
limansky
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 14
По умолчанию

Спасибо. Постараюсь переделать процедуру переключений языков согласно образцу.
А может Вы что-то посоветуете и по такому поводу...
В прогах мне приходится использовать wav-файлы, так как с MP3 происходят неприятные вещи - часто пропадает начало звучания оцифрованных фраз и вообще как попало. С wav такого не происходит - как оцифровал фразу - так и звучит в программе.
Но хотелось бы уменьшить вес программ...

Последний раз редактировалось limansky; 08.05.2011 в 13:46.
limansky вне форума Ответить с цитированием
Старый 08.05.2011, 13:51   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ну, с MP3 тоже такое не происходит.

Если происходит - верный признак того, что ты что-то делаешь неправильно. Что именно - не видя кода, сказать невозможно.

В абстрактном вакууме MP3 тут ни при чём.

Для проигрывания MP3 достаточно удобно подходит библиотека BASS.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.05.2011, 14:06   #7
limansky
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 14
По умолчанию

код типа такого:
MediaPlayer.FileName:='Sound.MP3';
MediaPlayer.Open;
MediaPlayer.StartPos:=SPos;
MediaPLayer.EndPos:=EPos;
MediaPlayer.Play;
Так вот - при FileName='Sound.wav' - всё ок.
Но при MP3 происходят выше указанные глюки.
Хотя есть сообщения, что у некоторых в их компах всё работает нормально с МР3.
Да, эту процедуру я вызываю по клавише ПРОБЕЛ. Может как-то с этим связано?

Последний раз редактировалось limansky; 08.05.2011 в 14:17.
limansky вне форума Ответить с цитированием
Старый 08.05.2011, 14:19   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Я не имею опыта работы с TMediaPlayer. Рекомендую задать этот впорос в отдельной теме, чтобы кто-то другой мог ответить.

P.S. Что-то мне подсказывает, что ожидать воспроизведения сжатого звука (с использованием кодека) от TMediaPlayer может быть несколько наивным. Могу ошибаться, конечно.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.05.2011, 14:37   #9
limansky
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 14
По умолчанию

Таки вы отправляете меня разбираться с BASS? Правильно понимаю?
А могу я набраться наглости и попросить вас написать точно такую же процедуру используя BASS?
Я действительно полный чайник в этих вопросах. Если можно, пожалуйста.
Слова типа кодек меня просто пугают.
Мне нужно только зацепиться. Понять основную идею. Дальше разберусь сам.

Последний раз редактировалось limansky; 08.05.2011 в 14:47.
limansky вне форума Ответить с цитированием
Старый 08.05.2011, 14:42   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Я отправляю вас создать вопрос по TMediaPlayer.

Но, таки да, есть два пути: разбираться с TMediaPlayer или использовать BASS. Я не могу говорить за первый, но зато могу сказать, что со вторым проблем нет.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заблокировать клавиатуру? BaRSyk174 Общие вопросы Delphi 6 26.02.2011 00:34
Как переключить видеокарты на семерке Agent3004 Компьютерное железо 1 24.02.2011 22:28
Переключить раскладку клавиатуры. SKYLINEGTR Помощь студентам 2 02.02.2011 00:50
Программно переключить закладки TabControl Человек_Борща Общие вопросы Delphi 12 18.12.2010 01:01
Как заблокировать клавиатуру? dradysman Общие вопросы Delphi 3 30.11.2009 18:34