Главная страница
    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.013 c
2-1166686128
Sergey__
2006-12-21 10:28
2007.01.14
Различное поведение НД при вставке и редактировании.


1-1164097566
infom
2006-11-21 11:26
2007.01.14
Переназначение обработчиков событий у компонентов.


15-1166607915
JENIA_VLASOV
2006-12-20 12:45
2007.01.14
Алгоритм Эратосфена


9-1141072759
Slava_K
2006-02-27 23:39
2007.01.14
Движение объектов


2-1166992055
Vladimir1984
2006-12-24 23:27
2007.01.14
Карта высот(OpenGL) как заменить цвета?





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