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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 10:02   #1
virtuhay266
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 57
По умолчанию Поиск слова в файле

Мне по заданию нужно искать слово в файле, я воспользовался функцией POS, но при тестировании обнаружилось, что я не учел, что функция не найдет слово, если в нем будут символы в разных регистрах! Получается, что слова одинаковые, а набор символов разный.
Что мне делать?
вот моя функция
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  j:integer;
  s:ansistring;
  s1,s2:ansistring;
  f:textfile;
begin
  if pos(' ',edit1.Text)=0
    then
      if length(edit1.Text)<>0
        then
          begin
            s2:='Строки начинаюшиеся со слова '+edit1.Text;
            label3.Caption:=s2;
            s1:=edit1.Text;
            j:=0;
            AssignFile(F,OpenDialog1.FileName);
            reset(f);
            while not(eof(f)) do
            begin
              j:=j+1;
              readln(f,s);
              if (pos(s1,s)=1)and((s[length(s1)+1]=' ')or(s[length(s1)+1]=s1[length(s1)+1]))
                then
                  label3.Caption:=label3.Caption+' '+inttostr(j);
            end;
            CloseFile(f);
            if s2=label3.Caption
              then
                label3.Caption:='В файле не строк начинающихся со слова '+edit1.Text;

          end
        else showmessage('Введите слово для поиска')
    else  showmessage('Слово не должно содержать пробелов')
end;
virtuhay266 вне форума Ответить с цитированием
Старый 28.05.2009, 10:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 if (pos(AnsiUpperCase(s1),AnsiUpperCase(s))=1)...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2009, 11:18   #3
VaBank
Пользователь
 
Аватар для VaBank
 
Регистрация: 26.05.2009
Сообщений: 26
По умолчанию

AnsiUpperCase - приводит все символы к верхнему регистру. Кстати данный оператор работает по-моему только с кириллицей. Для латинского алфавита надо применить просто UpperCase
VaBank вне форума Ответить с цитированием
Старый 28.05.2009, 11:27   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от VaBank Посмотреть сообщение
AnsiUpperCase - приводит все символы к верхнему регистру. Кстати данный оператор работает по-моему только с кириллицей. Для латинского алфавита надо применить просто UpperCase
Вы немного перемудрили. UpperCase работает с латинской частью кодовой таблицы, а AnsiUpperCase - со всей кодовой таблицей.
Так что никакого криминала не будет, если вы станете использовать только AnsiUpperCase...
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как расположить в алфавитном порядке слова,содержащиеся в файле? JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 0 20.12.2008 13:58
как поменять местами слова в файле? r-tem Общие вопросы C/C++ 6 01.12.2008 22:17
Поиск слова. Gon Паскаль, Turbo Pascal, PascalABC.NET 3 05.10.2008 17:14
Поиск 'Слова' JakSon Работа с сетью в Delphi 1 20.04.2008 00:13
Поиск слова в окне Иллидан Общие вопросы Delphi 21 07.03.2008 22:43