3

Delphi はさまざまな言語にローカライズされています (英語、日本語、ドイツ語、フランス語だと思います)。コマンド ライン コンパイラ (dcc32) もローカライズされているため、ドイツ語版では "Error" ではなく "Fehler" が、"Warning" ではなく "Warnung" がコンソールに表示されます。

この出力を解析し、(その機能の 1 つとして) エラーと警告をカウントするプログラムを作成しました。これは、ローカライズされた文字列では失敗します。

ローカライズされたテキストも検出するようにプログラムを適応させることはできますが、それは間違っているように感じます。むしろ、コンパイラーに出力に英語を使用させたいと思います。それを行うためのコマンドラインスイッチまたはその他のオプションはありますか?

msbuild を使用するすべての Delphi バージョン、つまり >=2007 をサポートしたいと考えています。

編集:

メッセージではなくエラー コードを読み取る場合は、次のエラーを検討してください。

C:\[...]\Borland.Delphi.Targets(113,3): error : blub.pas(56) Error: E2029 ',' expected but identifier 'bla' found

エラー コードは E2029 ですが、プログラムで検出するのはかなり困難です。テキスト "Error: " の検出ははるかに簡単で、エラーが発生しにくくなっています。

4

2 に答える 2

5

ほとんどの Delphi アプリケーションと同様に、使用されるロケールはレジストリの の下に設定されますHKEY_CURRENT_USER\Software\Embarcadero\Locales。古いバージョンではHKEY_CURRENT_USER\Software\Borland\Locales.

于 2015-08-28T16:24:01.763 に答える
1

正規表現を使用してこれらのステートメントを解析し、さまざまな断片 (この場合はエラー番号) を取得します。(多くの人が正規表現を嫌っていることは理解していますが、まったく同じテンプレートに従ってすべての出力を作成するために使用されるフォーマット ステートメントが 1 つまたは 2 つある場合、正規表現は完璧です。)

于 2015-08-28T16:06:02.743 に答える