Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Сравнение строк   Найти похожие ветки 

 
Krants   (2006-11-24 17:43) [0]

Знает ли кто функцию(может завалялся алгоритм) осуществляющую сравнение строк одна из которой может быть задана в форме маски(т.е. "*иванов*получил ? балов*").
И возвращаемая булевский результат?


 
zdm ©   (2006-11-24 17:51) [1]

использу БД, и оператор LIKE решит все твои проблемы


 
Krants   (2006-11-24 17:57) [2]


> использу БД, и оператор LIKE решит все твои проблемы


точно! только вот напряжно будет компоненту, для которого нужен этот алгоритм...


 
zdm ©   (2006-11-24 17:59) [3]

select ... from ... where name LIKE %ива% and bal=5;
if fields[0].asstring="" then showmessage("нет такого человечка")


 
Krants   (2006-11-24 18:07) [4]

вот так всегда, сам спрашиваю и сам же нахожу ответ...
держите может кому-то и пригодится

{
Данная функция осуществляет сравнение двух строк. Первая строка
может быть любой, но она не должна содержать символов соответствия (* и ?).
Строка поиска (искомый образ) может содержать абсолютно любые символы.
Для примера: MatchStrings("David Stidolph","*St*") возвратит True.

Автор оригинального C-кода Sean Stanley
Автор портации на Delphi David Stidolph
}

function MatchStrings(source, pattern: string): Boolean;
var
 pSource: array[0..255] of Char;
 pPattern: array[0..255] of Char;

 function MatchPattern(element, pattern: PChar): Boolean;

   function IsPatternWild(pattern: PChar): Boolean;
   var
     t: Integer;
   begin
     Result := StrScan(pattern, "*") <> nil;
     if not Result then
       Result := StrScan(pattern, "?") <> nil;
   end;

 begin
   if 0 = StrComp(pattern, "*") then
     Result := True
   else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
     Result := False
   else if element^ = Chr(0) then
     Result := True
   else
   begin
     case pattern^ of
       "*": if MatchPattern(element, @pattern[1]) then
           Result := True
         else
           Result := MatchPattern(@element[1], pattern);
       "?": Result := MatchPattern(@element[1], @pattern[1]);
     else
       if element^ = pattern^ then
         Result := MatchPattern(@element[1], @pattern[1])
       else
         Result := False;
     end;
   end;
 end;

begin
 StrPCopy(pSource, source);
 StrPCopy(pPattern, pattern);
 Result := MatchPattern(pSource, pPattern);
end;


 
Virgo_Style ©   (2006-11-24 18:34) [5]

MatchesMask, регулярные выражения


 
Krants   (2006-11-24 18:39) [6]

уже понял, вот раньше бы сказал...


 
Anatoly Podgoretsky ©   (2006-11-24 18:46) [7]

> Krants  (24.11.2006 17:43:00)  [0]

MatchesMask



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.011 c
15-1166599709
Хэй
2006-12-20 10:28
2007.01.14
Application


15-1167067714
vasIZmax
2006-12-25 20:28
2007.01.14
Мнение


15-1166973440
palva
2006-12-24 18:17
2007.01.14
С рождеством тех,


15-1166835428
Смаг
2006-12-23 03:57
2007.01.14
А Интернет в Туркмении был запрещен


15-1166645169
IMHO
2006-12-20 23:06
2007.01.14
Покачать фильмы и сериалы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский