Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
MyName
0 / 0 / 1
Регистрация: 25.05.2014
Сообщений: 5
#1

Определение номера строки текста, где встречается подстрока - Delphi

05.06.2014, 17:24. Просмотров 478. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста, не могу разобраться с тем, что нужно добавить в текст, чтобы моя кнопка "поиск" выводила не только количество вхожденй слова в текст, но и номер строки, в которой это слово будет встречаться. Пытался сделать с AnsiPos(по примеру из интернета), но не вышло
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
edit1.setfocus;
a:=memo1.Lines.text;
q:=edit1.text;
 if pos(q,a)<>0 then
  begin
  for i:=0 to length(a)-length(q) do
  begin
  if copy(a,i,length(q))=q then inc(j);
  end;
  memo2.Clear;
  memo2.Lines.Add('Колличество вхождений в текст: '+inttostr(j));
  end else showmessage('Слово не встречается в тексте');
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 17:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определение номера строки текста, где встречается подстрока (Delphi):

Определение номера строки
Всем привет. Как в TMEmo или TRichEdit или TSynMemo определить номера строк,...

Определение номера строки
Я попытался создать прогу но наткнулся на весьма странную ошибку :wall: ! Вот...

Номер позиции в текстовом файле, начиная с которой, встречается подстрока
Здравствуйте, уважаемые! Помогите, пожалуйста, решить задачу. Дан текстовый...

Удалить строку из Memo, если в ней встречается определенная подстрока
Вообщем есть у нас на форме memo1 и button. В memo1 у нас написан какой-то ...

Выделение/определение символов из строки текста
Подскажите пожалуйста, как выделить символы из текста, т.е. например у нас есть...

Для каждого из слов последней строки текста указать, сколько раз оно встречается в этом тексте
Здравствуйте. Помогите, кто может. Дан текстовый файл. Для каждого из слов...

7
northener
пофигист широкого профиля
3252 / 2304 / 628
Регистрация: 15.07.2013
Сообщений: 13,600
05.06.2014, 17:41 #2
Цитата Сообщение от MyName Посмотреть сообщение
выводила не только количество вхожденй слова в текст, но и номер строки, в которой это слово будет встречаться
Так работай не с Memo.Text, а с Memo.Lines.
0
Зотов_из_ОСА
Аналитик
79 / 79 / 63
Регистрация: 24.04.2014
Сообщений: 465
Записей в блоге: 15
05.06.2014, 17:49 #3
MyName,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,j1,k:integer;
Nm: array[1..100] of integer;
begin
edit1.setfocus;
for i:=0 to memo1.lines.count-1 do
 begin
 a:=memo1.Lines[i];   
 j1:=2;
 q:=edit1.text;
 if pos(q,a)<>0 then
  begin
  for k:=0 to length(a)-length(q) do
  begin
  if copy(a,k,length(q))=q then 
    begin    
      inc(j);
      if j=1 then b[1]:=i else if b[j1]<> b[j1-1] then 
        begin
          inc(j1);
          b[j1]:=i; 
        end;
    end;
    end;
  end;
  memo2.Clear;
  memo2.Lines.Add('Колличество вхождений в текст: '+inttostr(j));
  end else showmessage('Слово не встречается в тексте');
  memo2.lines.add('подстрока встречается в строках:');
  for i:=1 to j1 do
     begin
         memo2.lines.text:=memo2.lines.text + inttostr(b[i]) + ' ';
     end;
 end;
 
end;
0
MyName
0 / 0 / 1
Регистрация: 25.05.2014
Сообщений: 5
05.06.2014, 18:47  [ТС] #4
Ошибки выдаетОпределение номера строки текста, где встречается подстрока
0
Зотов_из_ОСА
Аналитик
79 / 79 / 63
Регистрация: 24.04.2014
Сообщений: 465
Записей в блоге: 15
05.06.2014, 18:54 #5
MyName, с end'ами напутал, а в остальном не объявлены переменные
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,j1,k:integer;
a,q: string;
b: array[1..100] of integer;
begin
edit1.setfocus;
for i:=0 to memo1.lines.count-1 do
 begin
 a:=memo1.Lines[i];
 j1:=2;
 q:=edit1.text;
 if pos(q,a)<>0 then
  begin
  for k:=0 to length(a)-length(q) do
  begin
  if copy(a,k,length(q))=q then 
    begin
      inc(j);
      if j=1 then b[1]:=i else if b[j1]<> b[j1-1] then
        begin
          inc(j1);
          b[j1]:=i;
        end;
    end;
    end;
  end;
  memo2.Clear;
  memo2.Lines.Add('Êîëëè÷åñòâî âõîæäåГ*ГЁГ© Гў ГІГҐГЄГ±ГІ: '+inttostr(j));
  end;
  if j=0 then showmessage('Ñëîâî Г*ГҐ âñòðå÷Г*ГҐГІГ±Гї Гў ГІГҐГЄГ±ГІГҐ');
  memo2.lines.add('ïîäñòðîêГ* âñòðå÷Г*ГҐГІГ±Гї Гў ñòðîêГ*Гµ:');
  for i:=1 to j1 do
     begin
         memo2.lines.text:=memo2.lines.text + inttostr(b[i]) + ' ';
     end;
 end;
и еще создай memo2
0
MyName
0 / 0 / 1
Регистрация: 25.05.2014
Сообщений: 5
05.06.2014, 20:31  [ТС] #6
memo2 у меня было
сейчас выводит мне какие-то большие числа и, если ввожу слово которое не встречается в тексте, то не выскакивает окошко с сообщением о том, что такого слова нет, а выводит те же большие числа
Определение номера строки текста, где встречается подстрока
0
Зотов_из_ОСА
Аналитик
79 / 79 / 63
Регистрация: 24.04.2014
Сообщений: 465
Записей в блоге: 15
05.06.2014, 21:43 #7
MyName, Проверено
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
procedure TForm1.Button1Click(Sender: TObject);
 
var
i,j,j1,k:integer;
a,q: string;
b: array[1..100] of integer;
begin
edit1.setfocus;
memo2.Clear;
 j1:=2;
 j:=0;
for i:=0 to memo1.lines.count-1 do
 begin
 a:=memo1.Lines[i];
 q:=edit1.text;
 if pos(q,a)<>0 then
  begin
  for k:=1 to length(a)-length(q) do
  begin
  if copy(a,k,length(q))=q then
    begin
      inc(j);
      if j=1 then b[1]:=i else if b[j1]<> b[j1-1] then
        begin
          b[j1]:=i;
          inc(j1);
        end;
    end;
    end;
  end;
  memo2.Clear;
  end;
  memo2.Lines.Add('ïîäñòðîêГ* âñòðå÷Г*ГҐГІГ±Гї Гў ГІГҐГЄГ±ГІГҐ ' +inttostr(j)+ 'Г°Г*Г§');
  if j=0 then showmessage('ïîäñòðîêГ* Г*ГҐ âñòðå÷Г*ГҐГІГ±Гї Гў ñòðîêå') else begin
  memo2.lines.add('ïîäñòðîêГ* âñòðå÷Г*ГҐГІГ±Гї Гў ñòðîêГ*Гµ:');
  for i:=1 to j1 do
     begin
         memo2.lines.text:=memo2.lines.text +' ' + inttostr(b[i]);
     end;
 end;
end;
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
06.06.2014, 12:27 #8
Зачем это всё?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses StrUtils;
 
procedure TForm1.Button10Click(Sender: TObject);
var
  i, Cnt: Integer;
begin
  Cnt := 0;
  with TStringList.Create do
  try
    Duplicates := dupIgnore;
    for i := 0 to Memo1.Lines.Count do
      if ContainsStr(Memo1.Lines[i], Edit1.Text) then // ContainsText для поиска без учета регистра
      begin
        Add(IntToStr(i)); Inc(Cnt);
      end;
 
    Memo2.Lines.Add(Format('Количество вхождений строки %s в текст: %d', [Edit1.Text, Cnt]));
    if Cnt = 0 then
      ShowMessage('Слово не встречается в тексте')
    else
      Memo2.Lines.Add('Подстрока встречается в строках:' + sLineBreak + Text);
  finally
    Free;
  end;
end;
0
06.06.2014, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 12:27
Привет! Вот еще темы с решениями:

Прочесть информацию, отталкиваясь номера строки файла и порядкового номера первого симвала в строке
не стал создавать новую темку, решил что тут тоже задать вопрос можна.... есть...

Определение номера по заданной перестановке
У меня есть массив с перестановками элементов 1 2 3.Вот пример: 1 2 3 ...

Задача на определение порядкового номера
Условие: Дана непустая последовательность различных натуральных чисел, за...

Определение номера текущей недели в году
Идет К-й день в году. Составить программу, которая определяет номер текущей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru