2016-09-18 19 views
1

まず、コンピュータ上で使用されている測定単位を知る必要があるので、twip(1440または567)に変換する定数を設定できます。私はウェブ上の "どこにでも"見てきました。私はGetLocaleInfoかGetLocaleInfoExのどちらを使うべきかどうかは問題になります。誰かがその違いを説明してもらえますか?GetLocaleInfo - その他のヘルプ - デルファイXE5

第2に、このフォーラムの「コントロールパネルの地域および言語の詳細設定でのシステム測定単位の読み取りと変更方法」の回答が見つかりました。測定単位を設定するためのコードが表示されていますが、情報を取得するためのパラメータを設定する際に問題があります。誰でも適切な関数(GetLocaleInfoまたはGetLocaleInfoEx)の例を挙げることができます。

+1

これまでに何を試みましたか? –

+0

私は両方の形式を試みました。いずれの場合も、利用可能な多くの例からロケールとタイプを調べました。しかし、ちょっとした初心者の方では、結果の0または1との関連性を見ることができなかったため、「lpLCData」と「cchData」に入ったものを処理するのが非常に困難でした。また、 Win32Checkへの参照を見た - 私はこれを取るそれはすべてのエラーをトラップすることです。 – Badger

答えて

2
var 
    L: array [0..1] of Char; 
begin 
    Win32Check(GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IMEASURE, @L, 2)); 
    if L[0] = '0' then 
    // metric 
    else 
    // US 


var 
    L: array [0..1] of Char; 
const 
    LOCALE_NAME_SYSTEM_DEFAULT = '!x-sys-default-locale'; 
begin 
    Win32Check(GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IMEASURE, @L, 2) <> 0); 
    if L[0] = '0' then 
    // metric 


GetLocaleInfoGetLocaleInfoExlocale nameを受け入れ、locale identifierを受け入れます。どちらもロケール情報を取得します。 Vistaとそれ以降のバージョンでは、カスタムロケールのサポートとしてGetLocaleInfoExを使用することが推奨されています。

+0

コードはうまくいった。ありがとう。問題が解決されたことを公式に述べる方法はありますか? – Badger

+0

ようこそ。あなたは答えを受け入れることができます*上向きの矢印の近くにチェックマークがあります。これは関数を呼び出す唯一の方法ではないことに注意してください。キーは[documentation](https://msdn.microsoft.com/en-us/library/dd373786(v = vs.85).aspx)を見つけることです。 2文字のバッファを渡す必要があることがわかったら、とにかくそれを行います。 Win32Checkはオプションですが、重要なのはエラーをチェックすることだけです。 –

関連する問題