Главная страница
    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.012 c
2-1167047200
alex1111111111111111
2006-12-25 14:46
2007.01.14
как с помощью winapi закачать фаил с ftp


9-1142295967
chemicalR
2006-03-14 03:26
2007.01.14
Игра на память.


2-1167137665
Numark
2006-12-26 15:54
2007.01.14
Проблема с таймером


15-1166470318
Kolan
2006-12-18 22:31
2007.01.14
А как установить поддержку азиатских языков в Windows?


2-1167016229
Single3
2006-12-25 06:10
2007.01.14
Как определить, что переменная равна значениям NAN или -NAN ?





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