Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 14:43   #1
Vigi
Пользователь
 
Аватар для Vigi
 
Регистрация: 25.09.2008
Сообщений: 38
По умолчанию Функция поиск по маске

Здрасти!
Что то не могу сообразить нужно сделать универсальную функцию поиска в тексте по маске!
текст (массив) будет иметь только числовые значения.


пример:
маска 'aabbb' = 77333 = 44111 и тд.
маска 'aaxbb' = 22033 = 99733 = 11422 и тд.
маска 'ababab' = 121212 = 414141 и тд.
маска 'xxxbb' = 12377 = 10344 = 75622 ..

Есть мысли ? или уже есть готовое решение и не нужно выдумывать велосипед ?!
Я с Вами где-то рядом...
Vigi вне форума Ответить с цитированием
Старый 19.05.2011, 14:58   #2
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

есть стандартная функция MatchesMask но не думаю что она подойдет
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 19.05.2011, 15:00   #3
Vigi
Пользователь
 
Аватар для Vigi
 
Регистрация: 25.09.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Swarog Посмотреть сообщение
есть стандартная функция MatchesMask но не думаю что она подойдет
Эт я знаю это не то
Я с Вами где-то рядом...
Vigi вне форума Ответить с цитированием
Старый 19.05.2011, 15:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что кроме Вас подобный поиск больше никому не нужен.
Поэтому выдумывайте велосипед...

Ан нет... похоже, регулярные выражения Вам помогут!
посмотрите на
TRegExpr


ДОБАВЛЕНО

снимаю свое предложение насчёт регулярных выражений..
проще ручками свой "велосипед" смастерить, чем их приспособить под такую нестандартную ситуацию...

Последний раз редактировалось Serge_Bliznykov; 19.05.2011 в 15:41.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2011, 10:21   #5
Vigi
Пользователь
 
Аватар для Vigi
 
Регистрация: 25.09.2008
Сообщений: 38
По умолчанию

Вот люди дали готовую функцию все реально работает,
делюсь может кому и еще сгодится...

Код:
function MatchesSmartMask(Mask, Value: string): Boolean;
  var
    i: Integer;
    Map: array[Char] of Char;
    ReverseMap: array['0'..'9'] of Char;
  begin
    Result := False;
    if Length(Mask) <> Length(Value) then
      Exit;
    FillChar(Map, SizeOf(Map), 0);
    FillChar(ReverseMap, SizeOf(ReverseMap), 0);
    for i := 1 to Length(Mask) do
      if Mask[i] <> 'x' then
        if Map[Mask[i]] = #0 then begin
          if ReverseMap[Value[i]] = #0 then begin
            Map[Mask[i]] := Value[i];
            ReverseMap[Value[i]] := Mask[i];
          end
          else if ReverseMap[Value[i]] = Mask[i] then begin
          end
          else
            Exit;
        end
        else if Map[Mask[i]] <> Value[i] then
          Exit;
    Result := True;
  end;
Я с Вами где-то рядом...
Vigi вне форума Ответить с цитированием
Старый 20.05.2011, 11:48   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. спасибо!

забавно Действительно работает!

p.s. а если не секрет, при решении какой задачи/проблемы возникает потребность в подобных масках?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2011, 14:17   #7
Vigi
Пользователь
 
Аватар для Vigi
 
Регистрация: 25.09.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
угу. спасибо!

забавно Действительно работает!

p.s. а если не секрет, при решении какой задачи/проблемы возникает потребность в подобных масках?
Не секрет, для своей команды в атомомную рыбалку клиент писал )


отслеживать рыб в турнире помогает )
Я с Вами где-то рядом...
Vigi вне форума Ответить с цитированием
Старый 20.05.2011, 18:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
отслеживать рыб в турнире помогает )
спасибо за ответ!
супер!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск файла по соддержимому и маске. КаМММ Microsoft Office Excel 10 30.06.2010 01:47
Поиск текста по маске WinApi Помощь студентам 6 27.12.2009 01:17
Поиск папки по маске ForzaJuve Общие вопросы Delphi 9 20.06.2009 23:50
Поиск По маске CoreFox Общие вопросы Delphi 11 21.02.2008 21:48