Вопрос по Query.Locate
В целом дело обстоит так
procedure Form1.Click(Sender TObject);
var s1,s2 String;
begin
// тут происходит присвоение s1 и s2
if Query.Locate('CODE1;CODE2',VarArrayOf([s1,s2]),[]) then
begin
[...]
end
end;
s1 и s2 содержат заглавные русские буквы. Длина полей CODE1 и CODE2 - 6 символов. Причём в s1 и s2 в принципе не может быть более 5 букв, также как и в этих полях не может быть более 5 букв. Я предположив, что дело можно исправить дополнением s1 и s2 нужным числом пробелов, вставил перед Query.Locate дополнение пробелами
if length(s1)<6 then
repeat
s1=s1+' '
until length(s1)>=6;
if length(s2)<6 then
repeat
s2=s2+' '
until length(s2)>=6;
Однако это не помогло,- по прежнему выполнение Query.Locate приводило к ошибке. Тогда я попробовал изменить тип s1 и s2 на String[6], но и это не помогло. Также не помогло и убирание добавления пробелов к s1 и s2 в испостаси String[6].
Что делать?
Подобная ошибка у меня возникала, когда поле в котором я ищу было, допустим, длиной 15 символов, а искал я в нем строку длиной 16 символов.