2017-08-07 9 views
3

私はTCustomClientDataSet(メモリ内にあります)はDelphiプログラムで何らかのフィルタリングを行うために使用されています。Delphi:フィールド 'False'が見つかりません。私のコンピュータ上でのみ発生しました

のような私のフィルタリングコードを見て:

CDSFilteredGroup: Champ 'False' non trouvé. 

翻訳:フィールド

CDSFilteredGroup.Filter := 'ACP_type = 1 AND ACP_by_default <> False'; 
    CDSFilteredGroup.Filtered := True; 

私はコンパイルして実行すると、私は自分のコンピュータにインストールされている唯一のDelphi(XE4)と、次のエラーを得ました「偽」が見つかりません。同じコードをコンパイルして、同僚のコンピュータで完璧に正常に実行しますが、私のものではありません。私が見逃しているオプションがなければなりません。

が...コードがOKと作業で、

+0

'ACP_by_default'フィールドはブール値フィールドですか?私はそれが愚かなアイデアだと知っていますが、 '(ACP_type = 1)AND(ACP_by_default <> False)'(MIDASはそんなに馬鹿馬鹿しくないとは思いませんか? – Victoria

+0

ありがとう、あなたの答えは、コードは大丈夫です、それは仕事です。この問題は、コンピュータ上でコンパイルされたときにのみ発生します。私はそれについてのどこかのオプションを探しています。 – Jimbot

+0

私はそれをコンパイルできないと言っているわけではありません。実行時に評価される文字列式です。間違った評価を考えていた。 – Victoria

答えて

7

を覚えてフィルタ文字列を処理するために使用TExprParserインスタンスがSTextTrueSTextFalseとして与えられたresourcestringsのに依存しています。 IDEライブラリ用に英語以外の言語が設定されている可能性があります。英語に切り替えて、エラーが消えるかどうか確認してください。

この問題を回避するには、一般的に問題のテキスト "False"をresourcestringの内容に置き換えます。STextFalse

これは、英語以外の環境でもリテラル "False"を受け入れるDelphiのそれ以降のバージョンで修正されました。

+0

言語ロケールID(バージョン情報)を英語(米国)に変更しましたが、まだ失敗します。私はSTextFalseで値Falseを変更する場合、それは動作します。あなたは正しくなければなりませんが、コードを変更せずにテストするために十分な深さで言語を変更する方法を理解することができます。 – Jimbot

+2

DelphiのbinフォルダにBdsSetLang.exeを実行します。これにより、IDE言語とライブラリ言語を別々に選択することができます。ライブラリ言語は、ここでは関連する言語です。 –

+0

奇妙なことに、両者は英語版です... – Jimbot

関連する問題