Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
1

Вывести строки из файла

14.01.2010, 13:53. Показов 2280. Ответов 6
Метки нет (Все метки)

здраствуйте! помоги те плиз с программным кодом! не получается сделать:

Delphi
1
2
3
4
5
6
7
8
9
10
while not EOF(f) do
      begin
      readln(f,buf);//читаем строку из файла
      inc(j);
    if (pos(AnsiUpperCase(temp),AnsiUpperCase(buf))<>0) and ((buf1[length(temp)+1]=' ')or(buf[length(temp)+1]=temp[length(temp)+1]))//ищем по слову эту строку
      
           then
              begin
                label1.Caption:=label1.Caption+' '+inttostr(j);//записываем номер строки этой в Лейбл
                    ListBox2.Items.Add(buf1);//записываем эту строку в Листбокс
Вопрос! Как мне сделать так, чтобы после того как я нашёл строку по заданному слову, вывести не только её, но и ещё 10след(или N) следующих строчек из файла..
Идея была: переменной любой, например Nstr присвоить номер найденной строки, потом цикл - i>=Nstr Nstr<=i+10 но реализовать не получилось((..помогите плз!!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2010, 13:53
Ответы с готовыми решениями:

Ввести строки из файла, записать их в стек. Вывести строки в файл в обратном порядке
Помогите сделать лабу :help:

Вывести строки файла, после строки добавляя, сколько раз в ней встретилось слово
Напишите программу, которая считывает текст из файла и выводит на экран все строки файла, после...

Строки: считать текст из файла и вывести в другой файл и на экран только строки, не содержащие цифр
Написать программу, которая считывает текст из файла и выводит в другой файл и на экран только...

Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла
Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго...

6
Супер-модератор
8767 / 2502 / 142
Регистрация: 07.03.2007
Сообщений: 11,856
14.01.2010, 14:24 2
taxo, ну так заведи себе счетчик и начинай добавлять следующие строки с инкрементом, как достигнешь нужного значение - прекращай добалвение, в чем проблема-то?
1
712 / 400 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.01.2010, 15:18 3
Цитата Сообщение от taxo Посмотреть сообщение
begin
label1.Caption:=label1.Caption+' '+inttostr(j);//записываем номер строки этой в Лейбл
ListBox2.Items.Add(buf1);//записываем эту строку в Листбокс
после этого момента повторите чтение из файла:
Delphi
1
2
3
4
5
6
7
8
jj:=1;
while not EOF(f) do  //здесь не проверяем кол-во строк. А вдруг файл кончится? :)
      begin
         readln(f,buf);//читаем строку из файла
         ListBox2.Items.Add(buf1);
         inc(jj);
         if jj>нужного значения then exit; //выход из цикла если считали нужное кол-во строк
      end;
1
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
15.01.2010, 13:34  [ТС] 4
Андрей Борисович
Спасибо! Очн презнателен))примерно так и хотел

сообщение отLord_Voodoo
в чем проблема-то?
просто был ступор..догадаться не мог..если бы не было проблемы, стал бы я сюда писать? тоже признателен за ответ..

Ещё кое чё запостю если не получится сделать!

Добавлено через 3 часа 56 минут
вопрос ещё такой появился! Нашёл слово которое мне нужно, но в тексте встречается их много! Нада в ЛистБокс вывести текст блока - от одного найденного слова до другого этого же слова( например, слово "каша", нашёл его, идёшь дальше по строкам выкидываешь его в Лист до тех пор пока не увидел снова слово "каша")
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while not EOF(f) do
 begin
readln(f,buf);//читаем строку из файла
      inc(j);
    if (pos(AnsiUpperCase(temp),AnsiUpperCase(buf))<>0) //ищем по слову эту строку
                 then
              begin
                label1.Caption:=label1.Caption+' '+inttostr(j);//записываем номер строки этой в Лейбл
                    ListBox2.Items.Add(buf1);//записываем эту строку в Листбокс
                i:=0;
                
                 while (pos(AnsiUpperCase(temp),AnsiUpperCase(buf1))< 0) do<--вот с этим условием заморочка(как сделать чтобы то такого же слова делал цикл)
                   begin
                    while not EOF(f) do
                    begin 
                    readln(f,buf);
                      if i<=j+14
                        then
                          listbox2.Items.Add(buf1)
                     else break;  //then exit;
                  inc(i);
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
18.01.2010, 13:26  [ТС] 5
Может кто-нибудь подсказать, почему не выводится..
Нада из тхт вывести текст,наподобии
ПЕРЕСЧЕТ..
Сообщения программы пересчета:
Ошибок не обнаружено

ПЕРЕСЧЕТ...
Сообщения программы пересчета:
Ошибок не обнаружено

ПЕРЕСЧЕТ..
Сообщения программы пересчета:
ОШИБКА отрицательное значение активного параметра договора
Дата : Наименование параметра :Основные проценты
Значение параметра :-хххх.хх

ПЕРЕСЧЕТ..
Сообщения программы пересчета:
Ошибок не обнаружено
Идея такая:
1)сначала искать слово Пересчёт, вывести эту строчку в переменную(buf1)
2) пока не конец файла, искать слово Ошибка по строчкам, пока не встретил слово Пересчёт снова, если не нашёл слово Ошибка от одного пересчёта до другого, то выход, если нашёл, то нада вывести весь блок в ЛистБокс
Примерный код..но чёт думаю не то..помоги те плиз

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
 
while not EOF(f) do
      begin
      readln(f,buf1);
      inc(j);
 
        if (pos(AnsiUpperCase(temp),AnsiUpperCase(buf1))<>0) // поиск слова Пересчёт
           then
             begin
                flag:=true;
                label1.Caption:=label1.Caption+' '+inttostr(j);
                i:=j; //когда конпилирую, нет присвоей i
                mistake:='ОШИБКА';
               
                 while not eof(f) do
                   begin
                   readln(f,buf1);
                  
   if ((pos(AnsiUpperCase(mistake),AnsiUpperCase(buf1))=0)and(flag=false))//ищет слово      Ошибка в строке
                          then
                           inc(i)// должен увеличивать инкримент,если не нашёл, но проскакивает
                           else if ((pos(AnsiUpperCase(mistake),AnsiUpperCase(buf1))<>0)and(flag=false))
                           then
                           listbox2.Items.Add(buf1)
                           else
                           break;                        
 
                           end;
0
712 / 400 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
20.01.2010, 07:48 6
Для таких параметральных данных существует формат файлов INI. Гораздо удобнее с ними работать.
Посмотрните вот этот урок, с их использованием
http://articles.org.ru/lessond/les16.php
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
22.01.2010, 02:06  [ТС] 7
я тут написал, что мне надо - произведён поиск строки по слову
Delphi
1
  if (pos(AnsiUpperCase(mistake),AnsiUpperCase(buf1))<>0) then
, потом открывается тот же файл, только в другую переменную заносится, снова делаю цикл какой мне удовлетворяет и вывожу их, потом с нова в верх, пока файл f не закончится! Одна борода, на второй раз цикла
Delphi
1
while not EOF(f) do
он выдирает строки не те, на которых закончил
Delphi
1
k
, а со следующей строки, которую нашёл по слову!! как мне установить позицию или сделать так, что он брал след. строчки из файла f, после того как я закончил выводить в листбокс из t.. Сразу Seek отпадает, потому что TextFile, ошибка несовместимости типов выходит=(..
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
42
43
44
45
46
47
48
49
50
51
52
 AssignFile(f,openfile);
        try
          Reset(f);
        except
             on EInOutError do
             begin
 
              ShowMessage('Ошибка доступа к файлу'+openfile);
              exit;
             end;
  begin
    while not EOF(f) do
      begin
 
 
       inc(j);
       readln(f,buf);
       buf1:=eom866towin1251(buf);
 
         if (pos(AnsiUpperCase(mistake),AnsiUpperCase(buf1))<>0) then
           begin
           s1:=j;
        
                AssignFile(t,openfile);
                Reset(t);
                    begin
                      while not eof(t)
                        do
                          begin
 
                            inc(k);
                            readln(t,buf3);
                             buf2:=eom866towin1251(buf3);
 
 
                                if (k>=(s1-2)) and (k<=(s1+11))
                                     then
                                       listbox2.Items.Add(buf2);
                               
 
                                if k>=s1+11
                                     then
                                      break;
                              end;
                            end;
                  CloseFile(t);
 
    end;
    end;
 
 CloseFile(f);
 end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2010, 02:06

Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла
Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго...

Вывести строки из файла, до определенной
Здравствуйте! Есть файл типа: Вопрос Вариант ответа Вариант ответа Вариант ответа next...

Вывести на экран чётные строки файла
Создать и заполнить текстовой файл f. Вывести на экран чётные строки файла.

Вывести строки файла в одной строке
Здравствуйте! хотелось бы спросить. Допустим есть файл in.txt. В этом файле есть строки типа...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru