Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Метод Locate с опцией loCaseInsensitive
Метод Locate с опцией loCaseInsensitive
Posted: 2008/01/15 13:57
 
DELPHI 7 Build 4.453
AnyDAC 1.12.2 Build 225
MySQL 5.0.49
WinXP SP2

В базе MySQL таблица в кодировке UTF8 со столбцом VARCHAR (utf8_general_ci). Кодировка клиента и соединения установлены в cp1251.

 ADQuery1.SQL.Text := 'select col1 from table1'; ADQuery1.Open; ADQuery.Locate('col1'InputBox('Locate''Search for'''), [loCaseInsensitiveloPartialKey]);


При поиске русского текста ищет только точное совпадение с учетом регистра, латиницу же находит без проблем в любом регистре.

При отладке в файле daADDatSManager.pas нашел, что проверяется флаг условной компиляции AnyDAC_NOLOCALE_DATA.

Как установить этот флаг и есть ли другие способы решения задачи?

Post edited by: maxturkin, at: 2008/01/15 22:51

Post edited by: maxturkin, at: 2008/01/15 22:53
Re:Метод Locate с опцией loCaseInsensitive
Posted: 2008/01/15 23:33
 
Привет

Вам необходимо открыть AnyDACsourcedaAD.inc, найти там AnyDAC_NOLOCALE_DATA. Если оно определено, т.е.:

 {$define AnyDAC_NOLOCALE_DATA}


то надо заменить на:

 {.$define AnyDAC_NOLOCALE_DATA}


что бы было НЕ определено.
Re:Метод Locate с опцией loCaseInsensitive
Posted: 2008/01/16 00:21
 
Спасибо, Дмитрий.

В файле daAD.inc нашел искомую строчку и закоментировал по вашему совету. Теперь Locate и в многобайтных строках ищет без учета регистра.