Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2013, 00:08
Chinvad Chinvad вне форума
Прохожий
 
Регистрация: 23.11.2011
Сообщения: 23
Репутация: 10
По умолчанию Умный поиск

Здравствуйте! Мне нужно организовать такой поиск, где во введенной строке взаимозаменялись следующие виды символов:
-заглавная и строчная буква (Слово = слово, СЛОВО = слово)
-буквы с аналогичным написанием в латинице и кириллице.
Не то чтобы мне хотелось просить кого-то из форумчан писать с нуля этот код... просто думается, что он вполне может оказаться какой-нибудь готовой процедуркой, выложенной в сети, ибо вероятно многие сталкиваются с этой проблемой. Если у кого-то есть такой поиск, поделитесь, пожалуйста )
Ответить с цитированием
  #2  
Старый 13.04.2013, 00:49
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для первого случая достаточно AnsuUpperCase/AnsiLowerCase, со вторым сложнее.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 13.04.2013, 01:39
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Всё ж просто. Вот ссылка
Ответить с цитированием
  #4  
Старый 13.04.2013, 01:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Chinvad
Здравствуйте! Мне нужно организовать такой поиск, где во введенной строке взаимозаменялись следующие виды символов:
-заглавная и строчная буква (Слово = слово, СЛОВО = слово)
-буквы с аналогичным написанием в латинице и кириллице.
Не то чтобы мне хотелось просить кого-то из форумчан писать с нуля этот код... просто думается, что он вполне может оказаться какой-нибудь готовой процедуркой, выложенной в сети, ибо вероятно многие сталкиваются с этой проблемой. Если у кого-то есть такой поиск, поделитесь, пожалуйста )

По первому:
Код:
function FindSubString(Substr : String; Str : String) : Boolean;
begin
  Result := Pos(AnsiUpperCase(Substr),AnsiUpperCase(Str)) > 0;
end;

По второму - гораздо сложнее. Там надо писать довольно объемный код. Не сказал бы, что очень сложный, но покумекать придется.

Последний раз редактировалось lmikle, 13.04.2013 в 03:27.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Chinvad (13.04.2013)
  #5  
Старый 13.04.2013, 02:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Uniq!
Всё ж просто.
Ишь размечтался. Мало того что, самое простое, проверить подстановку одинаковых по написанию символов, сложнее другое - нет единого правила транскрипции сиволов "ч", "ш" и подобных.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 13.04.2013, 03:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от angvelem
Ишь размечтался. Мало того что, самое простое, проверить подстановку одинаковых по написанию символов, сложнее другое - нет единого правила транскрипции сиволов "ч", "ш" и подобных.

а как я понимаю, это и не требуется. Необходимо только проверить те символы, начертание которых одинаково в обоих языках. но все-равно придется идти посимвольно и сравнивать.
Ответить с цитированием
  #7  
Старый 13.04.2013, 03:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Да, стандартное табличное сравнение.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 13.04.2013, 10:13
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от angvelem
Ишь размечтался.
Не усложняйте
Ответить с цитированием
  #9  
Старый 13.04.2013, 10:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Код:
Const
 Similar: record Rus,Lat: String[5]; end = (Rus:'аоерс';Lat:'aoepc');
begin
 for i := 1 to 5
 do S := StringReplace(S,Similar.Lat[i],Similar.Rus[i],[rfReplaceAll]);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Chinvad (13.04.2013)
  #10  
Старый 13.04.2013, 12:51
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Uniq!
Не усложняйте
Усложняю не я, а пользователи, которые могут ввести в поисковую строку всё что угодно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 13.04.2013, 13:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

ну если уж вы хотите облегчить жизнь пользователю, тогда вам придется и текст в ошибочной раскладке обрабатывать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #12  
Старый 13.04.2013, 15:29
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Более детально опишите проблему.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 13.04.2013 в 16:12.
Ответить с цитированием
  #13  
Старый 13.04.2013, 16:16
Chinvad Chinvad вне форума
Прохожий
 
Регистрация: 23.11.2011
Сообщения: 23
Репутация: 10
По умолчанию

Всем спасибо за внимание к проблеме ) А проблема, если уж совсем конкретизировать, в следующем. Например, в магазине вводят приход краски "10P соколор". При этом продавец может ввести и "10P Соколор" и много как еще (я вообще не удивилась бы, если соколор пишется по английски в накладных), причем "Р" может быть как в русской раскладке, так и в английской. А по базе ТМЦ нужно организовать поиск. И поиском пользуются не всегда те, кто как попало вводит данные.
Ответить с цитированием
  #14  
Старый 13.04.2013, 16:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для данного случая достаточно составить таблицу соответствий букв с одинаковым написанием
Цитата:
A = А
C = С
...
обработать введённые данные через эту таблицу, а затем уже искать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Chinvad (14.04.2013)
  #15  
Старый 13.04.2013, 17:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Эээээ.... А я чуть ранее разве уже не дал код для этого?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter