Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизTClientDataSet.Locate Найти похожие ветки
← →
misha_gr (2007-09-24 13:43) [0]Здравствуйте. Столкнулся с тем, что TClientDataSet.Locate не работает с русским чарсетом (поиск по строковому полю). Не находит записей, которые однозначно там есть. CaseInsencitive - без разницы. Если искать цифры или латиницу - то всё нормально. Аналогично работает фильтрация. В инете только упоминание проблемы, но не решение. Тем удивительнее, что лично видел массу решений, в которых Locate функционировал нормально. Отягчающие обстоятельства : Delphi 6 + 2upd, DB - (Мидас?) хранится в бинарном файле (ClientDataSet.SavetoFile(), ClientDataSet.LoadFromFile()).
← →
Anatoly Podgoretsky © (2007-09-24 13:57) [1]> misha_gr (24.09.2007 13:43:00) [0]
Находит но не все.
Проклятая проблема проклятых американцев.
Много о себе думают.
← →
Вася Правильный (2007-09-24 14:04) [2]некоторые буквы не фурычат
← →
misha_gr (2007-09-24 14:11) [3]А чуть поконкретней можно?
← →
sniknik © (2007-09-24 15:11) [4]> Тем удивительнее, что лично видел массу решений, в которых Locate функционировал нормально.
> ... (Мидас?)
а уверен что в тех решениях использовался мидас? (TClientDataSet)... ведь он далеко не единственный который позволяет таблицы в памяти, Locate и SavetoFile.
или есть исходники тех решений где работает? тогда там и посмотри как сделано.
> А чуть поконкретней можно?
не выйдет у тебя с ним ничего, если это действительно "Проклятая проблема проклятых американцев."... это они гады так написали, не задумываясь о локализациях. и переделывать не заставить.
← →
Anatoly Podgoretsky © (2007-09-24 15:17) [5]> sniknik (24.09.2007 15:11:04) [4]
Заставить можно, но у меня нет таких денег.
← →
misha_gr (2007-09-24 15:25) [6]> а уверен что в тех решениях использовался мидас? (TClientDataSet)...
Там используется dbExpress + Oracle. Однако TClientDataSet - тот же самый.
> есть исходники тех решений где работает? тогда там и посмотри как
> сделано.
Частично. В том смысле, что некоторая часть функциональности присутствует в виде DLL. А вообще тот же Locate используется. Данные загружаются в TClientDataSet по другому.
← →
sniknik © (2007-09-24 15:25) [7]ну, с помощью денег это уже называется не "заставить".
кстати а тут ничего нет по теме?
http://www.distribucon.com/midasbug/
← →
sniknik © (2007-09-24 15:27) [8]> Данные загружаются в TClientDataSet по другому.
может быть даже с другой кодовой страницей....
вот это и смотри. в чем разница.
← →
Johnmen © (2007-09-24 15:29) [9]У меня с русскими буквами работает.
← →
Anatoly Podgoretsky © (2007-09-24 15:39) [10]Locate работает с локально загруженными данными и глубоко плевать какими средствами в него загружено.
← →
sniknik © (2007-09-24 15:43) [11]> У меня с русскими буквами работает.
ну, удивил ;). у меня возможно тоже работает... если попробовать.
только вопрос, а как ты менял (где) "русский чарсет"? а если не менял, то с ним ли оно работает? ;)
← →
Johnmen © (2007-09-24 15:48) [12]
> только вопрос, а как ты менял (где) "русский чарсет"?
не менял. ничего не менял...
> а если не менял, то с ним ли оно работает? ;)
э-э-э-э... "оно" это кто? :)
← →
sniknik © (2007-09-24 15:53) [13]> Locate работает с локально загруженными данными и глубоко плевать какими средствами в него загружено.
а если загрузить в досовой кодовой странице, поставить русский чарсет "oem dos" в гриде (видеть руское), а в локейте искать в виндовой?
← →
sniknik © (2007-09-24 15:57) [14]> не менял. ничего не менял...
ну отож... а в [0] видимо менялось (упоминается, т.к. если бы не менялось то сказано бы было не о чарсете, а о русских буквах...)
← →
Johnmen © (2007-09-24 15:58) [15]Да нету никаких гридов. Есть самый обычный TClientDataSet. Без провайдера. В него добавляются записи, удаляются, корректируются... И между делом выполняется локейт. Выполняется успешно.
← →
Anatoly Podgoretsky © (2007-09-24 16:03) [16]Если не использовать особые методы издевательств над компонетами, то Locate работает с ANSI, вне зависимости от языковых драйверов, а вот преобразованиями уже они занимаются.
Вроде не ошибаюсь?
← →
misha_gr (2007-09-24 16:59) [17]Упс. Мой косяк. Человечище с какого-то бодуна использовал TWideStringField, вместо нормального TStringField. А я не посмотрел... Чувствую себя идиотом.
Всем спасибо, и извините за потраченное время.
Модеру отдельные поздравления за дар научного предвидения. Как ни прискорбно, но оно оказалось право.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c