Hello,
we have found another bug with DOA 4.1.3.5 and XE6 20.0.16277.1276 which is related to QBE:

When using QBE in our filtering dialogs, some TDBEdits refuses certain special characters (like 'c' and 's' with carons), but others (like 'e' and 'i' with acutes) work ok. We have discovered that the problem is connected to definitions of Field.ValidChars and Field.IsCharValid and manipulation with ValidChars in TOracleDataSet.EnterQBEMode. Essentially ValidChars is a set of AnsiChar, but IsCharValid takes Char as a parameter.

Code
function TField.IsValidChar(InputChar: Char): Boolean;
var
  LChar: Char;
begin
  if ValidChars <> [] then
  begin
    Result := False;
    for LChar in ValidChars do
    begin
      if LChar = InputChar then
      begin
        Result := True;
        Break;
      end;
    end;
  end
  else
    Result := True;
end;

As you can see, empty ValidChars is interpreted as "all characters are valid". However EnterQBEMode sets ValidChars to any charater by setting its bits to 1. This works fine for one byte characters (<256), but larger ones are considered invalid because they cannot be represented in sets of AnsiChar such as ValidChars. We suggest that EnterQBEMode should set bits of ValidChars to 0, so all characters including the >255 ones are considered valid.

We did not have the time to wait for the official fix, so we patched OracleData.dcu in the following way and it seems to work ok:
In 32bit dcu, we changed 2E39A-2E3B9 from FF to 00. In 64bit dcu, we changed 4A730-4A74F from FF to 00.

Last edited by PreXident; 01/12/15 12:23 PM.