4

「度」記号と「オーム」記号など、いくつかの特殊文字を使用する Delphi フォームがいくつかあります。これらの文字は、DFM ファイルに保存されたラベル キャプションで使用され、実行時に生成または変更されません。これらのフォームを最初に設計したとき、角度記号は Ansi 文字セット (コード 176) に含まれていたので簡単でしたが、オーム記号はコード 217 で使用するギリシャ文字セットが必要でした。 need (文字と数字) は、ギリシャ文字セットで正常に機能します。

ここで、これらのフォームが D2009 でも同じように見えるようにします。度記号は正常に表示されますが、dfm テキストが "Caption = 'Typed in Ohms - 1234 '#217" であるため、オーム記号は 'Ù' と表示されます。フォームを編集して正しい Unicode オーム記号 (8486) を入力できることがわかりましたが、もちろんこれは「?」で失われます。D7に戻るとき。理想的には、dfm の #217 がオーム記号にマップされるように、フォームでギリシャ文字セットを引き続き使用するように D2009 に指示したいと思います。これは可能ですか?「GREEK_CHARSET」である Font.Charset 設定を無視しているようです。これを解決する汚い方法を発見しました。これは、すべてのコンポーネントを反復処理して "StringReplace( S, 'Ù', OhmsChar, [rfReplaceAll] )" を実行することですが、これは恐ろしいことであり、もっと良い方法があるに違いありません。

ありがとう、ブライアン

4

3 に答える 3

4

私が持っていた同様の問題は、dxgettextを使用することで解決されました。問題のあるキャプションの代わりに、クリーンなASCII(「Typedin Ohms」など)を使用して、それらをpoファイルに変換し、exeにリソースとして埋め込みました。

ところで、dxgettextは、アプリに翻訳を追加するための優れた方法であり、オーバーヘッドはほとんどなく、優れた3pエディター(poEdit)を備えた標準形式(po / mo)です。D7およびD2009で動作します。

于 2009-05-08T15:16:59.093 に答える
3

ブルースがすでに述べたように、これらの値を与えるためにコードを使用することができます。例といくつかの追加情報を示します。

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

ほとんどの翻訳ツールはリソースで機能するため、翻訳可能なテキストにはconstではなくリソース文字列を使用することをお勧めします。

于 2009-05-08T15:15:15.603 に答える
2

これを行うために私が見つけた最もクリーンな方法は、これらの「特別な」キャプションをコードに入力することでした。必要に応じて IFDEF を使用できます。

于 2009-05-08T12:57:53.203 に答える