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

Как считывать из текстового файла, пропуская первую строку?

11.10.2017, 09:05. Просмотров 1027. Ответов 10
Метки нет (Все метки)

Имею такой код:
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
procedure TF_knopka.fZagrClick(Sender: TObject);                   // Закрузка данных
var ft:TextFile;
    a,i,j:longint;
    st:string;                                                // Строчка
begin
for i:=0 to StringGrid1.RowCount-1 do
    for j:=0 to StringGrid1.ColCount-1 do StringGrid1.Cells[j,i]:='';     // Обнуление таблицы
StringGrid1.RowCount:=1;
 
if (OpenDialog1.Execute)                                                    // Попытка открытия
   then begin
        AssignFile(ft,OpenDialog1.FileName);
        Reset(ft);                                                       // Обнуление
        while not eof(ft) do                                             // Пока не конец файла
              begin
              readln(ft,st);                                              // Считываем файл по st - строчкам
              j:=0;
              for i:=0 to length(st) do                                   // От 1 до последней строчки ( цикл )
                  if st[i]=chr(9)                                         // Проверка на табуляцию
                     then j:=j+1
                     else StringGrid1.Cells[j,StringGrid1.RowCount-1]:=StringGrid1.Cells[j,StringGrid1.RowCount-1]+st[i];  // После каждой табуляции новый столбик
              StringGrid1.RowCount:=StringGrid1.RowCount+1;               // Переход на новую строку
              end;
        StringGrid1.RowCount:=StringGrid1.RowCount-1;  // Задаётся кол-во строчек
        StringGrid1.FixedRows:=1;      // Фиксиррованная строчка до текста
        CloseFile(ft);                 // Закрытие файла
        end;
end;
И он читает все строчки, и записывает их в нужные столбики таблицы. Но первая строка у меня в текстовом файле = текст, и он там никак не нужен. Как сделать так, чтобы он при прочтении не учитывал первую строчку, не меняя коренным образом сам код. Просто введя какое-то условие или что-то вроде того. ( В память записывать и оттуда брать нельзя, нужно именно таким образом )
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 09:05
Ответы с готовыми решениями:

Как прочитать первую строку из текстового файла?
Есть текстовый файл, нужно сделать BATник который бы первую строку из текстового файла присваивал...

Считывать информацию из файла, пропуская пустые строки
В общем никак не пойму в чём проблема.. Условие while не срабатывает,вот код: StreamReader file...

Из текстового файла считывать строку, обрабатывать и результат записывать в тот же файл
Программа должна работать следующим образом, из текстового файла считывать строку, обрабатывать и...

Напечатать первую строку, пятую строку текстового файла
имеется текстовый файл , напечатать а) его первую строку б) его пятую строку

10
443 / 411 / 163
Регистрация: 11.12.2013
Сообщений: 2,196
11.10.2017, 09:40 2
Лучший ответ Сообщение было отмечено AngryTawer как решение

Решение

перед while not eof(ft) добавьте: readln(ft,st);
1
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 21
11.10.2017, 09:53  [ТС] 3
Цитата Сообщение от Алекcей Посмотреть сообщение
перед while not eof(ft) добавьте: readln(ft,st);
А зачем? Если оно есть после while not eof(ft). Что-то изменится?
0
443 / 411 / 163
Регистрация: 11.12.2013
Сообщений: 2,196
11.10.2017, 09:55 4
для того, чтобы пропустить первую строку. если правильно понимаю она не нужна
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 21
11.10.2017, 09:58  [ТС] 5
Цитата Сообщение от Алекcей Посмотреть сообщение
для того, чтобы пропустить первую строку. если правильно понимаю она не нужна
Понял, всё работает. Как я понимаю она просто считывает одну строку, и ничего с ней не делает? Спасибо большое.
0
Модератор
6466 / 4130 / 1787
Регистрация: 21.01.2014
Сообщений: 17,285
Записей в блоге: 3
11.10.2017, 10:00 6
Цитата Сообщение от AngryTawer Посмотреть сообщение
В память записывать и оттуда брать нельзя, нужно именно таким образом
А почему, если этот код ну вот абсолютно не оптимальный?
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 21
11.10.2017, 10:02  [ТС] 7
Цитата Сообщение от D1973 Посмотреть сообщение
А почему, если этот код ну вот абсолютно не оптимальный?
Потому что я первокурсник, и это задание на лабу, и там нельзя ничем другим пользоваться. А так-то я понимаю, что с памятью намного лучше.
0
3325 / 2868 / 776
Регистрация: 29.08.2013
Сообщений: 19,310
Записей в блоге: 1
11.10.2017, 10:10 8
после 17 строки вставь условие
Delphi
1
if j=0 then begin end else begin
а end поставь перед 23 строкой
костыль конечно, но быстро
0
Модератор
6466 / 4130 / 1787
Регистрация: 21.01.2014
Сообщений: 17,285
Записей в блоге: 3
11.10.2017, 10:15 9
Цитата Сообщение от AngryTawer Посмотреть сообщение
Потому что я первокурсник
А первокурсникам справкой пользоваться - грех великий?
1. Что мешает вместо двойного цикла в момент очистки сделать одинарный?
Delphi
1
2
for i:=0 to StringGrid1.RowCount-1 do
   StringGrid1.Rows[i].Clear;
2. Зачем такие извращения с обходом в цикле каждой строки?
Delphi
1
2
3
4
5
6
7
8
9
 j:=0;
 while not eof(ft) do 
  begin
   readln(ft, st);   
   StringGrid1.Rows[j].Delimiter := #9;
   StringGrid1.Rows[j].DelimitedText := s;
   StringGrid1.RowCount := StringGrid1.RowCount + 1;
   inc(j);
  end;
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 21
11.10.2017, 11:54  [ТС] 10
Цитата Сообщение от D1973 Посмотреть сообщение
Зачем такие извращения с обходом в цикле каждой строки?
Как учат, так и делаем
0
Эксперт Pascal/Delphi
4628 / 2616 / 830
Регистрация: 04.10.2012
Сообщений: 9,556
11.10.2017, 12:00 11
Цитата Сообщение от AngryTawer Посмотреть сообщение
Как учат
плохо учат. Уволить!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2017, 12:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удалить первую строку из текстового файла
Дан текстовый файл. Удалить из него первую строку. :help: Пожалуйста помогите в написании...

Нужно прочитать из текстового файла определённую строку (не первую)
Люди, спасайте. Перерыл весь инет, никак найти не могу. В книге у меня какой-то бред написан. Нужно...

Как считывать int из текстового файла?
есть файл текст.txt, который содержит запись "1". Как считывать эту единицу в виде int?

Как считывать каждые 2 символа из текстового файла?
Всем привет))) Ребят помогите пожалуйста!!! Кароч нужно написать прогу которая берет некий hex файл...


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

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

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