Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2017, 15:32   #1
ugorek
 
Регистрация: 20.07.2017
Сообщений: 6
Печаль Поиск слова по маске без uses Mask не робит

Решалась бы пробема отладкой, не задавал бы я тут этого вопроса, а так же мои нубские мозги не даёт решить мне проблему самому.

В memo1 на разных строчках есть два слова "дом" и "дым". В Edit1 маска "д*м" должна отослать эти два слова в Memo2 но ничего не происходит.
Как починить?

Код:
for i:=0 to Memo1.Lines.Count do
 if Memo1.Lines.Strings[i].Length=Length(Edit1.Text) then
  begin
   q1:=0;
   q2:=0;
   for q:=1 to Length(Edit1.Text) do
    if not(Edit1.Text[q]='*') then
     Inc(q2);
    for q:=1 to Length(Edit1.Text) do
     begin
    if (Memo1.Lines.Strings[i].Chars[q]=Edit1.Text[q]) then
     Inc(q1);
    if q2=q1 then
     begin
      Memo2.Text:=Memo2.Text+Memo1.Lines.Strings[i]+#13#10
     end;
    end;
   end;
ugorek вне форума Ответить с цитированием
Старый 20.07.2017, 15:58   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чего не использовать MatchesMask из юнита Masks?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.07.2017, 16:02   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ugorek Посмотреть сообщение
Поиск слова по маске без uses Mask не робит
что означает эта фраза?!!
в Delphi есть модуль Masks.pas
может быть,uses Masks имеется в виду?
но, судя по представленному ниже коду, Вы не используете функцию MatchesMask() из этого модуля.


Цитата:
Сообщение от ugorek Посмотреть сообщение
В memo1 на разных строчках есть два слова "дом" и "дым". В Edit1 маска "д*м" должна отослать эти два слова в Memo2 но ничего не происходит.
Как починить?
* - это у Вас строго один символ или может быть несколько?
(ну, например, если будет слово думаем - оно попадает под маску? )

почему не используете функцию MatchesMask() из модуля Masks ?

почему не используете регулярные выражения (тоже нужна дополнительная библиотека/модуль)?

или задача стоит именно Ваш кривой поиск отладить?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.07.2017, 16:27   #4
ugorek
 
Регистрация: 20.07.2017
Сообщений: 6
По умолчанию

Да, отладить кривой поиск.
Нет, ошибся чутка, вместо "*" надо "?", только один символ на своём месте.
Решил проблему всё таки использовав uses Masks :I
Как удалить эту тему?
ugorek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск целого слова в строке Memo без вхождений Маховик Общие вопросы Delphi 7 29.12.2015 02:54
Поиск по маске Alexey_68 Общие вопросы C/C++ 14 12.06.2013 00:33
Вынести слова по маске SKth Microsoft Office Word 5 14.12.2009 22:37
Поиск папки по маске ForzaJuve Общие вопросы Delphi 9 20.06.2009 23:50
Поиск По маске CoreFox Общие вопросы Delphi 11 21.02.2008 21:48