Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.043 c
4-1176989866
Dmitry_177
2007-04-19 17:37
2007.10.21
Правильно завершить ожидающий поток


15-1190108510
Empleado
2007-09-18 13:41
2007.10.21
Порекомендуйте Линух или подобную OS


2-1190954902
fend
2007-09-28 08:48
2007.10.21
Длина строковой переменной


4-1176893124
Иван16
2007-04-18 14:45
2007.10.21
Перехват вызова модального окна


5-1161949927
DevilDevil
2006-10-27 15:52
2007.10.21
Панели не сохраняются в DFM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский