Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Чтение файла в массив

Автор: camac 30.05.2016 19:24

Бодрого дня, господа знатоки.
Придумал себе такую проблему - чтобы выборочно файл читать не как все, а потом выводить это на экран.
А "загоняя" его построчно в массив и затем в нужный момент выводить необходимые строки (индексы массива).

Так вот вопрос - целесообразно ли это при количестве строк больше 1 500?
К стати, я сделал вот так:


program proba;
uses crt;
var
f: text;
mas:array [1..25] of string;
a,b,i:integer;
begin
repeat
write('ввести а: '); readln(a);
write('ввести b: '); readln(b);
assign (f, 'inf.txt');
reset (f);
for i:=1 to 25 do
readln(f,mas[i]);
for i:=a to b do
writeln(mas[i]);
close (f);
until (a=0) or (b=0);
end.

Может и подскажете как это правильнее и красивее сделать?

Автор: Федосеев Павел 31.05.2016 2:12

Текстовые файлы достаточно удобно считывать в переменную класса TStringList.

Если файл очень большой, то там применяют ещё какие-то манипуляции с отображением файла на память на основе классов. Это отображение поддерживается на уровне современных ОС.

Пример с TStringList http://forum.pascal.net.ru/index.php?showtopic=29401

Автор: camac 31.05.2016 15:32

Я так и делал. Мне http://www.cyberforum.ru/free-pascal/thread1531904.html кучу вариантов накидали, из которых я потом все сделал.
Но, почему-то кажется, что с массивом будет удобней.

Автор: Федосеев Павел 31.05.2016 18:07

Смотря какая задача. Смотря какой у вас сейчас уровень.

Задачу можно решить одним способом - решая её. Как решите - так и останется. Я одну задачку делал считывая построчно, и анализируя строку. Потом через 2 лет решил добавить функционал и понял, что удобнее через TStringList - неделю переделывал, но стало удобнее.

Как сделаете - так и будет. Потом захотите - переделаете на другом уровне.

Автор: camac 31.05.2016 22:02

Уровень у меня сейчас нулевой. Я изучаю паскаль по книжкам и форумам сугубо для себя.
Я гуманитарий и никогда не был программистом (мозги не в ту сторону от программирования).
Решил в свои под 60 воплотить мечтания детские, да и разминка для мозга. Не телевизор же смотреть да (в скором времени) с бабками на лавочке...

А в данном конкретном случае нужно просто из разных частей программулины выводиь на экран различную информацию из файла.
Сначала, например, с 1 по 10-ю строчку. Затем с 20-й по 22-ю. После с 50-й по 72 и т. д. (цифры просто с потолка, главное смысл моих телодвижений).
С помощью TStringList я сделал функцию и вызываю ее по мере надобности, подставляя нужное. А сейчас озадачился делать то же, но с помощью массива.