С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Узнать номер строки в txt

04.11.2014, 16:16. Показов 1934. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добро всем!
Как узнать номер строки в которой находится искомый текст?
Как вывести в Мемо определенную строку из txt зная номер строки?

вот способ узнать номер строки на дельфи:
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
var
a,b,n:String;
begin
b:='Слово';
n:='Номер строки в котором это слово';
a:=idhttp.get('http://сайт.ру/слова.txt');
 
S: TStrings;
  I: Integer;
  ...
begin
  ...
  S := TStringList.Create;
  try
    S.Text := a;
    for I := 0 to S.Count - 1 do
      begin
        if Pos(b, S.Strings[I]) > 0 then
          ShowMessage('Строка: ' + IntToStr(I));
      end;
  finally
    S.Free;
  end;
  ...
end;
если не в лом переведите, пожаааалуйста вот эти две строчки
Delphi
1
2
3
for I := 0 to S.Count - 1 do
 
        if Pos(b, S.Strings[I]) > 0 then
Добавлено через 21 минуту
Номер строки смог узнать:
C++
1
2
3
for(I = 0; I < S->Count; I++)
        if (S->Strings[I].Pos(Edit1->Text))
          Memo1->Lines->Add("íîìåð ñòðîêè " + IntToStr(I));
как зная номер строки вывести текст из строки в Мемо?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2014, 16:16
Ответы с готовыми решениями:

Как узнать номер строки без проверки каждой строки
Можно ли как-то узнать номер строки в которой содержится определённый символ без for-сирования? То есть без проверки каждой строки. ...

Узнать номер строки в ListBox!
у меня есть ListBox там к примеру 50 строчок как проверить если там нажата первая строка выполняеться одно действие если вторая то другое??

Как узнать номер следующей строки в DataGridView и вывести номер в textbox
Допустим у нас есть таблица и в ней заполнено две строки, тогда в текстбоксе мы должны получить номер 3.

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
04.11.2014, 16:21
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Так:
C++
1
Memo1->Lines->Add(S->Strings[i]); // где i - номер строки
, как еще?
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.11.2014, 16:43  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Memo1->Lines->Add(S->Strings[i]); // где i - номер строки
Да так.
я попутно вывожу следующую строчку так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TStringList *S = new TStringList;
  Integer I;
 
  S->LoadFromFile(ExtractFilePath(Application->ExeName)+"Zayavki\\Oleg.txt");
 
 
    for(I = 0; I < S->Count; I++)
        if (S->Strings[I].Pos(Edit1->Text)) {
     //    Memo1->Lines->Add("номер строки " + IntToStr(I));
 
 Memo1->Lines->Add(S->Strings[I]); // где i - номер строки
 I=I+2;
 Memo1->Lines->Add(S->Strings[I]);
}
Так работает но чет кошки на душе скребут что можно п улучшить...
Спасибо!
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
04.11.2014, 18:17
Цитата Сообщение от Samrisbe Посмотреть сообщение
но чет кошки на душе скребут что можно п улучшить...
Что бы кошки на душе не скреблись вместо типа Integer сделай int
1
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
04.11.2014, 19:08
Цитата Сообщение от Samrisbe Посмотреть сообщение
но чет кошки на душе скребут
правильно скребут... С такой конструкцией
C++
1
I=I+2;
в теле цикла ты запросто получишь выход за границы диапазона. Будет условие if выполнено в момент, когда
C++
1
I == S->Count - 1
и готово дело...
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.11.2014, 19:12  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
правильно скребут... С такой конструкцией
честно я сейчас уже час другой тестирую и ошибок не было...
Вот последний вариант где я вытаскиваю только две строки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Memo1->Clear();
TStringList *list = new TStringList;
list->LoadFromFile(ExtractFilePath(Application->ExeName)+"Zayavki\\Oleg.txt");
for(int i = 0; i < list->Count; i++)
   {
   if (list->Strings[i].Pos(Edit1->Text))
      {
       Memo1->Lines->Add(list->Strings[i]);
       i=i+1;
       Memo1->Lines->Add(list->Strings[i]);
       }
   }
list->Clear();
Если кто компетентно может улучшить этот цикл буду очень благодарен
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
04.11.2014, 19:16
на одну строку меньше
C++
1
2
3
4
5
6
7
8
for(int i = 0; i < list->Count; i++)
   {
   if (list->Strings[i].Pos(Edit1->Text))
      {
       Memo1->Lines->Add(list->Strings[i]);
       Memo1->Lines->Add(list->Strings[i+1]);
       }
   }
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.11.2014, 19:26  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
на одну строку меньше
Цитата Сообщение от Sasha Посмотреть сообщение
for(int i = 0; i < list->Count; i++)
* *{
* *if (list->Strings[i].Pos(Edit1->Text))
* * * {
* * * *Memo1->Lines->Add(list->Strings[i]);
* * * *Memo1->Lines->Add(list->Strings[i+1]);
* * * *}
* *}
Спасибо Саша, я так пробовал но мне показалось так не правильно.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
04.11.2014, 20:07
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Чего бы не пойти еще дальше:
C++
1
2
3
4
5
for(int i = 0; i < list->Count; i++)
{
   if (list->Strings[i].Pos(Edit1->Text))
       Memo1->Lines->Add(list->Strings[i] + "\r\n" + list->Strings[i+1]);
}
?
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.11.2014, 22:41
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

И еще дальше?...
C++
1
for( int i( -1 ), i_limit( list->Count ); ++i < i_limit; list->Strings[ i ].Pos( Edit1->Text ) ? Memo1->Lines->Add( list->Strings[ i ] + "\r\n" + ( ( i + 1 ) < i_limit ? list->Strings[ i + 1 ]: String( ) ) ) : 0 );
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
05.11.2014, 00:09  [ТС]
Спасибо всем участникам обсуждения!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2014, 00:09
Помогаю со студенческими работами здесь

Переписать файл 'F.txt' в файл 'G.txt', вставляя в конец каждой строки ее порядковый номер
Не успеваю, очень срочно на завтра надо 4. Дан текстовый файл 'F.txt'. Переписать файл 'F.txt' в файл 'G.txt', вставляя в конец ...

Переписать в новый файл output1.txt все его строки, вставив в конец каждой строки ее номер и количество символов в ней
Дан тектсовый файл input.txt. Необходимо:  переписать в новый файл output1.txt все его строки, вставив в конец каждой строки ее номер и...

Узнать номер строки
Здравствуйте, помогите ,пожалуйста, узнать номер строки, которая включает в себя текст. скачиваю веб страницу: string otvet = new...

Узнать номер строки
Можно ли как-то по слову определить номер строки? Если да то приведите пример пожалуйста!

Узнать номер строки в datagrid
Здравствуйте! есть на форме datagridview, как мне узнать номер выделенной строчки. Т е я нажимаю на первый столбец первой строки(или на...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru