Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / EOF с третьей строки? / 15 сообщений из 15, страница 1 из 1
26.05.2020, 08:40
    #39961999
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Подскажите пожалуйста. Возник вопрос можно ли сделать сдвиг чтения строк в таком коде:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  F: TextFile;
begin
....
    while not Eof(F) do
      begin
          Readln(F, s); 
...
end;



Так, чтобы чтение начиналось не сначала файла, а с n-строки.
...
Рейтинг: 0 / 0
26.05.2020, 08:53
    #39962005
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Код: pascal
1.
2.
3.
4.
for i := 1 to N do
  Readln(F);
while not Eof(F) do begin
  Readln(F, s); 
...
Рейтинг: 0 / 0
26.05.2020, 08:54
    #39962007
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666,

можно. прочитать предварительно n строк
...
Рейтинг: 0 / 0
26.05.2020, 10:43
    #39962054
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
DimaBr,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
LineCount:=0;
while not eof(f) do
   begin
       inc(LineCount);
       readln(F,S);              
       //  if (LineCount<=N) then continue;  
       // или
       if (LineCount>N) then 
          begin
             DoSomeWork(....);
          end;
   end;



т.к. for .. do - обломится если файл пустой или строк меньше, чем N.
...
Рейтинг: 0 / 0
26.05.2020, 11:07
    #39962069
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
DarkMaster

Код: pascal
1.
2.
3.
4.
5.
6.
while not eof(f) do begin
  Dec(N);
  readln(F,S);              
  if N>0 then Continue;
  DoSomeWork(....);
end;


...
Рейтинг: 0 / 0
26.05.2020, 12:16
    #39962127
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Немного не то, задача состоит именно в том, чтобы начать чтение с определенной строки, а не прочитать и пропустить.
...
Рейтинг: 0 / 0
26.05.2020, 12:27
    #39962138
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666,

в случае использования TextFile это невоможно
...
Рейтинг: 0 / 0
26.05.2020, 12:32
    #39962145
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666задача состоит именно в том, чтобы начать чтение с определенной строки, а не прочитать и
пропустить.

Это одно и то же. Невозможно найти начало строки, не прочитав все предыдущие. Если только
у тебя строки не фиксированной длины.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2020, 12:33
    #39962147
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
makhaonв случае использования TextFile это невоможно
Это невозможно при любом раскладе, а прикрутить Seek() к TextFile-то как раз
довольно просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2020, 13:31
    #39962209
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Dimitry Sibiryakov,

не то, что бы совсем при любом (например - индексы строк), но будем считать, что невозможно.
...
Рейтинг: 0 / 0
26.05.2020, 14:55
    #39962263
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Ок, информацию принял.
Есть еще один момент, пока не совсем ясно. как его обыграть.

Есть некий текстовый файл, его нужно распарсить.
Структура не стабильная по количеству строк относящихся к одному объекту, т.е. на один объект может приходится 1 строка, а может 5. Четкого разделения между объектами нет, только признак по первому символу строки (если это символ(может быть любой, пример внизу), то это новый объект, если пробел, то эта строка относится к текущему).
что-то типа:

Наименование Значение Тариф 1 Коэф.ьено объект № 1 123 5.9854820.2838 - корректировка 1 124 4.9854820.2838 - плановый 198 9.4820.1238 - пол. тариф. 3 178 9.4820.1238ва объект № 2 9 1.5120.2838 - корректировка 1 124 4.9854820.2838.фыва объект № 3 9 1.5120.2838%?* объект № N 123 5.9854820.2838 - корректировка 1 124 4.9854820.2838 - корректировка 2 18 9.23550.1238 - корректировка 3 88 9.530.1238 - корректировка 2 13 9.32760.1238 - корректировка 3 782 1.610.1238
Таблица фиксирована по ширине, строку можно разбирать по индексам. Как можно распарсить вот это? Т.е. по итогу нужно получить Наименование объекта, Значение, Тариф 1, Коэффициент, но если есть корректировка следующая за этой строкой, то необходимо взять значение из соответствующего столбца.
...
Рейтинг: 0 / 0
26.05.2020, 15:05
    #39962270
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666признак по первому символу строки (если это символ(может быть любой,
пример внизу), то это новый объект, если пробел, то эта строка относится к текущему).
что-то типа:

[src]if stroka[1] = ' ' then
target = tekuschij_objekt
else
target = novy_objekt;

Валерий666Как можно распарсить вот это?

Тривиально. Раз поля фиксированы - Copy() тебе поможет. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2020, 15:34
    #39962283
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Dimitry Sibiryakov,

Проблема в чтении файла. Мне надо читать построчно, предварительно переводя его из OEM в Win1251. С условием то понятно, непонятно как прочитать. Через EOF не получится, через for? Или загнать его в TStringList?
...
Рейтинг: 0 / 0
26.05.2020, 15:35
    #39962284
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666Мне надо читать построчно, предварительно переводя его из OEM в Win1251.

RTFM ResetFile(), SetTextBuf(), ReadLn().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2020, 15:37
    #39962286
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EOF с третьей строки?
Валерий666Или загнать его в TStringList?
Можно и так если файл мелкий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / EOF с третьей строки? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]