2017-08-07 1 views
3

Ich habe eine TCustomClientDataSet (im Speicher), die verwendet wird, um einige Filterung in einem Delphi-Programm zu tun.Delphi: Feld 'Falsch' nicht gefunden. nur auf meinem Computer aufgetreten

Mein Filter Code wie folgt aussehen:

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

Wenn ich kompilieren und ausführen, bekam ich die folgende Fehlermeldung nur mit Delphi (XE4) auf meinem Computer installiert ist:

CDSFilteredGroup: Champ 'False' non trouvé. 

Übersetzung: Feld 'Falsch' nicht gefunden. Derselbe Code kompiliert und läuft perfekt auf meinen Kollegen Computern, aber nicht auf meinem. Es muss irgendwo eine Option geben, die ich vermisse, irgendeine Idee?

Denken Sie daran, den Code in Ordnung ist und die Arbeit ...

+0

Das 'ACP_by_default' Feld ist ein boolesches Feld? Ich weiß, es ist eine dumme Idee, aber was ist mit '(ACP_type = 1) AND (ACP_by_default <> False)' (Ich hoffe, MIDAS ist nicht so ein Idiot)? – Victoria

+0

Danke, für Sie antworten, aber der Code ist in Ordnung, es ist Arbeit. Das Problem trat nur auf, wenn es auf meinem Computer kompiliert wurde. Ich suche irgendwo nach einer Option. – Jimbot

+0

Ich sage nicht, dass es nicht kompiliert werden kann. Es ist ein String-Ausdruck, der zur Laufzeit ausgewertet wird. Ich habe über eine falsche Bewertung nachgedacht. – Victoria

Antwort

7

Die TExprParser Instanz für die Handhabung der Filterzeichenfolge auf den als STextTrue und STextFalse gegeben resource beruht verwendet. Sie haben wahrscheinlich eine andere Sprache als Englisch für Ihre IDE-Bibliothek konfiguriert. Versuchen Sie, auf Englisch umzuschalten, und sehen Sie, ob der Fehler verschwindet.

Zur Umgehung dieses Problems im Allgemeinen ersetzen den Text "False" mit dem Inhalt des resourcestring STextFalse.

BTW, dies wurde in späteren Delphi-Versionen korrigiert, die auch das Literal "False" auch in nicht englischen Umgebungen akzeptieren.

+0

Ich habe die Language Locale ID (in Version Info) in Englisch (US) geändert, es schlägt jedoch immer noch fehl. Wenn ich den Wert False mit STextFalse ändere, funktioniert es. Du musst recht haben, aber ich kann herausfinden, wie ich die Sprache tief genug ändern kann, um sie zu testen, ohne den Code zu ändern. – Jimbot

+2

Führen Sie im Delphi-Bin-Ordner BdsSetLang.exe aus. Dies ermöglicht die separate Auswahl der IDE-Sprache und der Bibliothekssprache. Die Bibliothekssprache ist hier relevant. –

+0

Seltsam, sie sind beide Englisch-US ... – Jimbot

Verwandte Themen