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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2007, 20:12   #1
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию Поиск текста в строке

Нужно сделать так:
Если текст в определённой строке найден, то происходит одно действие. Если не найден то другое.
Можно таким методом:
ss:=copy(s,pos('text',s),length(s)-pos('text',s));
и там уже писать дальше...
Но мне кажется что он не слишком рациональный и есть какой-то способ проще!
Подскажите этот способ или скажите что его нет, если его действительно нет.
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 08.09.2007, 21:16   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Pos возвращает индекс символа с которого начинается искомая подстрока, если она не найдена возвращается ноль. Что непонятно?
Код:
var 
  source: string;
  text: string;
begin
if Pos(text, source) = 0 then {}
else {};
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 08.09.2007 в 21:23.
mutabor вне форума Ответить с цитированием
Старый 08.09.2007, 23:18   #3
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Всё понятно! Спасибо!
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 30.09.2007, 15:24   #4
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Ещё один вопрос по строкам:
Есть строка "http://site/213/4563" или "http://site/1074/3242". Вместо этих чисел могут быть другие.
Как найти и записать в отдельные переменные 213 или 1074, 4563 или 3242?

Вот так нахожу 213 или 1024:
Код:
  p1:=copy(i1,13,length(i1)-pos('/',i1));
  p1:=copy(p1,1,pos('/',p1));
  p1:=copy(p1,1,length(p1)-1);
А как наиболее рационально найти 4563 или 3242? Не знаю как выбрать начало для новой строки.
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 30.09.2007, 21:00   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Можно по разному, кто как привык, мне например так проще.

Копирует текст от нужного слеша до следующего или если его нет, то до конца строки
Код:
var
adress,s: string;
n,i,nom: integer;
begin
nom:=4; //с четвертого слеша
adress:='http://site/213/4563';
n:=0;
for i:=1 to Length(adress) do
  begin
  if adress[i]='/' then
    begin
    Inc(n);
    if n = nom then
      begin
      s:=Copy(adress,i+1,Length(adress)-i);
      if Pos('/',s) <> 0 then s:=Copy(s,1,Pos('/',s)-1);
      Break;
      end;
    end;
  end;
ShowMessage(s);
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 30.09.2007 в 21:07.
mutabor вне форума Ответить с цитированием
Старый 30.09.2007, 21:54   #6
PROGR
Пользователь
 
Аватар для PROGR
 
Регистрация: 12.05.2007
Сообщений: 19
Радость

Цитата:
Сообщение от CoDeR Посмотреть сообщение
Нужно сделать так:
Если текст в определённой строке найден, то происходит одно действие. Если не найден то другое.
Можно таким методом:
ss:=copy(s,pos('text',s),length(s)-pos('text',s));
и там уже писать дальше...
Но мне кажется что он не слишком рациональный и есть какой-то способ проще!
Подскажите этот способ или скажите что его нет, если его действительно нет.
А цикл не проще организовать?
for i:=1 to length( строка ) do
итд
PROGR вне форума Ответить с цитированием
Старый 30.09.2007, 22:38   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

http://delphibasics.ru/AnsiPos.php - в последней проге, по обработке текстовых данных юзаю это. + это http://delphibasics.ru/Delete.php

Как мало нужно для счастья
Alar вне форума Ответить с цитированием
Старый 01.10.2007, 23:56   #8
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Спасибо!

Alar, не понятно куда помещать

Код:
function AnsiPos ( const Needle, HayStack : string ) : Integer;
поместил в public, пишет ошибку:
Unsatisfied forward or external declaration: 'TForm1.AnsiPos'

И ещё как сделать поиск строки по всему тексту? Чтобы после того как искомый текст встретиться в тексте, искать до конца документа и записывать в другие переменные?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 02.10.2007, 01:01   #9
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

CoDeR AnsiPos - передаёт адрес первого символа в строке, я его использую ещё и так

Цитата:
if AnsiPos(текст, большая длинная строка) <>0 then текст есть в большой длинной строке;
Потом я удаляю часть текста, допустим так -
Цитата:
Delete(S,1,AnsiPos('?',S));
И опять прогоняю по строке S

Впринципе, есть инструменты, а как использовать их придумай сам

P.S. Когда я учился в школе, у меня был хирургический скальпель, очень удобно было карандаши точить
Alar вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и удаление символа в строке Karl_Karlovi4 Общие вопросы Delphi 14 26.10.2011 18:04
Проблема поиск и замена текста(Delphi) KirkMETAL Помощь студентам 4 26.07.2010 08:41
Как изменить цвет текста на всей строке в RichEdit, если строка содержит определенное слово?? IIpopoK Общие вопросы Delphi 0 22.06.2008 07:57
Поиск и замена текста в файле VAbramyak Общие вопросы Delphi 3 04.04.2007 20:20
поиск и замена текста в RichEdit Vasya Помощь студентам 11 16.03.2007 06:48