Главная страница
    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.011 c
15-1166706221
FIL-23
2006-12-21 16:03
2007.01.14
дайте ссылку на исходник кода


2-1166737977
lluha
2006-12-22 00:52
2007.01.14
DBGrid


1-1164118352
312kbps
2006-11-21 17:12
2007.01.14
Ini файл, не работает DeleteKey() !


15-1167016780
Австралия
2006-12-25 06:19
2007.01.14
Что на заставке Google делают кенгуру ?


1-1164019879
BasilAKANaiL
2006-11-20 13:51
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский