Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.019 c
11-1143564347
dskin
2006-03-28 20:45
2007.01.14
Тупой вопрос


2-1167047144
smaller
2006-12-25 14:45
2007.01.14
начинающий, работа со звуком


2-1166887149
BanserAnt
2006-12-23 18:19
2007.01.14
Кто находится в чате?


15-1166991218
PHPdeveloper
2006-12-24 23:13
2007.01.14
SQL запрос


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