【问题标题】:Delphi : Field 'False' not found. occurred only on my computerDelphi:找不到字段“假”。只发生在我的电脑上
【发布时间】:2017-08-07 09:12:57
【问题描述】:

我有一个TCustomClientDataSet(在内存中),用于在 Delphi 程序中进行一些过滤。

我的过滤代码如下:

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

当我编译并运行它时,只有在我的计算机上安装了 Delphi (XE4) 时出现以下错误:

CDSFilteredGroup: Champ 'False' non trouvé.

翻译:找不到字段“假”。相同的代码在我同事的计算机上编译和运行得非常好,但在我的计算机上却不行。我想念的地方一定有一个选择,知道吗?

记住,代码没问题,可以正常工作...

【问题讨论】:

  • ACP_by_default 字段是布尔字段吗?我知道这是一个愚蠢的想法,但是 (ACP_type = 1) AND (ACP_by_default &lt;&gt; False) 呢(我希望 MIDAS 不是这样的傻瓜)?
  • 谢谢你的回答,但代码没问题,它的工作。只有在我的电脑上编译时才会出现问题。我正在寻找一个关于此的选项。
  • 你确定这和编译有关吗?客户端数据集使用外部库 (MIDAS),只要您不会将其静态包含到您的项目中。如果可以的话,逃跑(并使用 FireDAC)。
  • 使用的Midas版本由DSIntf.Pas中的CheckDbClient确定。
  • @kobik,你是对的,做到了。

标签: delphi delphi-xe4


【解决方案1】:

用于处理过滤器字符串的 TExprParser 实例依赖于作为 STextTrueSTextFalse 给出的资源字符串。您可能为 IDE 库配置了英语以外的其他语言。尝试切换到英文,看看错误是否消失。

为了解决这个问题,一般将文本“False”替换为资源字符串的内容STextFalse

顺便说一句,这在后来的 Delphi 版本中得到了纠正,即使在非英语环境中也接受文字“False”。

【讨论】:

  • 我已将语言区域设置 ID(在版本信息中)更改为英语(美国),但仍然失败。如果我通过 STextFalse 更改值 False 它可以工作。您一定是对的,但我可以弄清楚如何在不更改代码的情况下将语言更改得足够深以对其进行测试。
  • 在 Delphi bin 文件夹中执行 BdsSetLang.exe。这允许分别选择 IDE 语言和库语言。库语言是这里的相关语言。
  • 您可能会检查您的搜索路径以查找意外的 Data.DBConsts 副本。
  • 由于不允许我更改代码库,我找到了另一个解决方案:使用控制面板中的添加/删除程序,我修改了 Delphi XE4 安装,并在设置中删除了任何外语.然后重新编译后,我没有任何错误。这不是一个真正的解决方案,但可以作为一种解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2021-03-27
  • 2013-06-06
相关资源
最近更新 更多