Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для lartia
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210

Выборочное чтение из файла

16.09.2015, 15:23. Показов 1503. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Бодрого дня, господа.
Ни как не могу найти решение такой проблемки:
Есть файл, допустим, info.txt:
Кликните здесь для просмотра всего текста

Первая строка Первого пункта
Вторая строка Первого пункта
Третья строка Первого пункта
Первая строка Второго пункта
Вторая строка Второго пункта
Третья строка Второго пункта
Первая строка Третьего пункта
Вторая строка Третьего пункта
Третья строка Третьего пункта

В паскале делаем якобы "меню":

Pascal
1
2
3
4
5
6
writeln('1.');
writeln('2.');
writeln('3.');
readln(N);
assign(F,'info.txt');
reset(F);
Человек вводит "1", "2" или "3". Необходимо прочитать нужные строки (с 1 по 3 или с 4 по 6, или с 7 по 9) и вывести на экран.
И на этом ступор. Знаю, как прочитать и вывести 3 первых. А остальные ...

Очень хелп.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.09.2015, 15:23
Ответы с готовыми решениями:

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

Выборочное чтение строк
Как прочесть из таблицы базы не все подходящие, а только одну или определённое количество строк?

Выборочное чтение dvd-rom
Привод у меня Optiarc DVD RW AD-7173S выборочно не читает диски, как лицензию так и другие. Чистящими дисками чистил, не помогло. Но бывает...

8
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33189 / 21485 / 8233
Регистрация: 22.10.2011
Сообщений: 36,866
Записей в блоге: 12
16.09.2015, 15:29
В FPC это вообще не проблема: читаешь сразу весь файл в TStringList, и потом выводишь из него строки от (N-1)*3 до 3*N-1
0
 Аватар для lartia
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
16.09.2015, 15:51  [ТС]
Просмотрел про TStringList, но не понял как его пользовать и как он может быть мне полезен. И как из него выводить строки.
Можете носом ткнуть в информацию? Или код подсказать?

PS. Забыл уточнить - паскаль изучаю сам. Никогда программистом не был. Вот решил на старости лет (уже 55). Так что не обессудьте, если дурацкие вопросы задаю.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33189 / 21485 / 8233
Регистрация: 22.10.2011
Сообщений: 36,866
Записей в блоге: 12
16.09.2015, 15:56
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от lartia Посмотреть сообщение
как он может быть мне полезен. И как из него выводить строки
Очень просто:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses classes;
var
  L : TStringList;
  i, n : integer;
begin
  writeln('1.');
  writeln('2.');
  writeln('3.');
  readln(N);
 
  L := TStringList.Create;
  L.LoadFromFile('info.txt');
  for i := (n - 1)*3 to 3*n - 1 do
    writeln(L[i]);
  L.Free;
end.
1
 Аватар для lartia
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
16.09.2015, 16:01  [ТС]
Спасибо огромнейшее.
Оказывается все так гениально просто.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
17.09.2015, 16:48
На всякий случай вариант без чтения всего файла в память:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  n: Integer;
  f: Text;
  s: String;
begin
  repeat
    Write('Введите число от 1 до 3: '); ReadLn(n);
  until n in [1..3];
  n:=n*3;
  Assign(f,'info.txt'); Reset(f);
  while not EOF(f) and (n>0) do begin
    ReadLn(f,s); Dec(n);
    if n<3 then WriteLn(s);
  end;
  Close(f);
end.
Добавлено через 8 минут
и ещё один:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  n, i: Integer;
  f: Text;
  s: String;
begin
  repeat
    Write('Введите число от 1 до 3: '); ReadLn(n);
  until n in [1..3];
  Assign(f,'info.txt'); Reset(f);
  for i:=1 to (n-1)*3 do { пропустим (n-1)*3 строк }
    if not EOF(f) then ReadLn(f);
  for i:=1 to 3 do { выведем следующие 3 строки }
    if not EOF(f) then begin
      ReadLn(f,s); WriteLn(s);
    end;
  Close(f);
end.
Добавлено через 3 минуты
и еще один:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  n, i: Integer;
  f: Text;
  s: String;
begin
  repeat
    Write('Введите число от 1 до 3: '); ReadLn(n);
  until n in [1..3];
  Assign(f,'info.txt'); Reset(f);
  for i:=1 to (n-1)*3 do { пропустим (n-1)*3 строк }
    if EOF(f) then Break else ReadLn(f);
  for i:=1 to 3 do { выведем следующие 3 строки }
    if EOF(f) then Break else begin
      ReadLn(f,s); WriteLn(s);
    end;
  Close(f);
end.
0
 Аватар для lartia
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
04.12.2015, 19:07  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses classes;
var
  L : TStringList;
  i, n : integer;
begin
  writeln('1.');
  writeln('2.');
  writeln('3.');
  readln(N);
 
  L := TStringList.Create;
  L.LoadFromFile('info.txt');
  for i := (n - 1)*3 to 3*n - 1 do
    writeln(L[i]);
  L.Free;
end.
Спасибо volvo.
Теперь такой еще вопрос возник - как этот самый текст выводить побуквенно? Как бы имитируя печатную машинку.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
04.12.2015, 21:25
Pascal
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
  classes,crt;
var
  L : TStringList;
  j,i, n : integer;
begin
  writeln('1.');
  writeln('2.');
  writeln('3.');
  readln(N);
 
  L := TStringList.Create;
  L.LoadFromFile('info.txt');
  for i := (n - 1)*3 to 3*n - 1 do
    begin
      for j:=1 to Length( L[i]) do
        begin
          write(L[i][j]);
          delay(10);
        end;
      writeln;
    end;
  L.Free;
  readln;
end.
1
 Аватар для lartia
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
05.12.2015, 00:01  [ТС]
Спасибо большое.
Я, правда, уже сам догадался. Вы подтвердили мою догадку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2015, 00:01
Помогаю со студенческими работами здесь

Выборочное чтение чисел из файлы
Здравствуйте! Ситуация такая: Есть файл с числами, содержание примерно такое: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20...

добавление и выборочное удаление из текстового файла
здравствуйте, помогите пожалуйста!!!горит срок сдачи лабораторной, а я в этом полный лузер :( есть скрипт, который имитирует примитивную...

Выборочное перемещение чисел из одного файла в другой
Здравствуйте помогите решить задание Дан файл f, компоненты которого являются целыми числами. Получить в файле g все компоненты файла...

Чтение чисел из файла. Чтение после конца потока невозможно
Товарищи, помогите. В Pascal'e я не силен, так что не бейте меня ногами, но есть задача: написать обычную программу для расчета некоторых...

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, &quot;ing&quot;) в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru