2009-05-08 7 views
4

У меня есть несколько форм Delphi, где мы используем пару специальных символов - символ «градус» и символ «ohms». Эти символы используются в заголовках меток, сохраненных в файле DFM, и не генерируются или не изменяются во время выполнения. Назад, когда мы впервые разработали эти формы, символ степени был легким, потому что он находится в наборе символов Ansi (код 176), но для символа ohms необходима греческая кодировка для использования с кодом 217. К счастью (мы обнаружили) все остальные символы, которые мы (буквы и цифры) отлично работают с греческой кодировкой.Перенос Delphi DFM со специальными символами на D2009

Теперь мы хотели бы, чтобы эти формы выглядели одинаково в D2009. Символ степени кажется прекрасным, но символ ома показывает «Ù», потому что текст dfm «Caption = 'Typed in Ohms - 1234' # 217". Я нахожу, что могу редактировать форму, чтобы вставить правильный символ символа Юникода (8486), но, конечно, это потеряно для '?' при возвращении к D7. В идеале я хотел бы сказать D2009, чтобы продолжить использовать греческую кодировку с формой, так что # 217 в dfm отображает символ ohms. Это возможно? Кажется, что игнорируется параметр Font.Charset, который является «GREEK_CHARSET». Я обнаружил грязный способ решения этого вопроса, который заключается в повторении всех компонентов и выполнении «StringReplace (S, ',' OhmsChar, [rfReplaceAll])», но это ужасно и, безусловно, должен быть лучший способ?

Спасибо, Brian

ответ

2

Чистейший способом я нашел, чтобы сделать это, чтобы заполнить эту «специальную» подпись в коде, где вы можете использовать IFDEFs при необходимости.

3

Как уже упоминал Брюс, вы можете использовать код, чтобы дать эти значения. Я просто приведу пример и дополнительную информацию.

resourcestring 
{$IFDEF UNICODE} 
    cOhm = unicodeohm;  // replace with correct values. 
    cDegree = unicodedegree; 
{$ELSE} 
    cOhm = ansiohm; 
    cDegree = ansidegree; 

Советуем использовать строки ресурсов, а не const для текста с возможностью перевода, поскольку большинство инструментов перевода работают с ресурсами.

+0

+1 для строк ресурсов. Они - самый чистый способ справиться с этим и сделать более поздний перевод с использованием существующих инструментов ветерок. – skamradt

+0

Это хорошее решение для кода, но как это помогает с файлами DFM? Спасибо –

4

Аналогичная проблема была решена с использованием dxgettext. Вместо проблемных титров я просто использовал чистый ascii (например, «Typed in Ohms»), а затем перевел их в po-файлах, встроенных в exe в качестве ресурсов.

BTW, dxgettext - отличный способ добавить переводы в приложение с очень небольшими накладными и стандартными форматами (po/mo) с хорошими редакторами 3p (poEdit). Работает с D7 и D2009.

+0

Интересно, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^