Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2020, 13:22   #1
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию Считать файл из нескольких колонок

Здравствуйте, народ.

Подскажите новичку, как проще решить типовую задачку - считать из файла несколько колонок чисел? Пусть для простоты две. Как считать строчку за строчкой, я понимаю.

Код:
while not Eof(F) do
begin
Readln(F, S);
end;
CloseFile(F);
Дальше нужно парсить полученные строки или есть возможность сразу получать в две переменные?
archerix вне форума Ответить с цитированием
Старый 24.01.2020, 15:41   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

http://www.delphibasics.ru/Read.php
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.01.2020, 02:17   #3
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Там как записывать в несколько колонок, а вот как считывать, пока неясно Понятно, что можно взять строку и распотрошить ее на кусочки между пробелами - но может, можно проще?

Последний раз редактировалось archerix; 25.01.2020 в 02:46.
archerix вне форума Ответить с цитированием
Старый 25.01.2020, 03:08   #4
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Код:
var
i1, i2 : Integer;

...

while not Eof(F) do
begin
 Readln(F, i1, i2);
 Writeln(i1, '        ', i2);
end;
В целые переменные вроде читает целые числа из файла.

Последний раз редактировалось archerix; 25.01.2020 в 03:19.
archerix вне форума Ответить с цитированием
Старый 25.01.2020, 11:24   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

вот, пока в ВУЗе учился, этот способ чтения файла не нравился
Код:
Readln(F, i1, i2);
а если подсунут файл, где в строке не 2 , а 1 или 3, 4....9 переменных записано?
пришёл к варианту: посимвольное считывание, сшивание в одну строку и потом уже искать символы перевода в строку #13#10 и разбиение на строки.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 25.01.2020, 13:47   #6
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Мне всегда было заранее известно, сколько колонок в файле и что в них записано
archerix вне форума Ответить с цитированием
Старый 25.01.2020, 19:32   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
вот, пока в ВУЗе учился, этот способ чтения файла не нравился
Код:
Readln(F, i1, i2);
а если подсунут файл, где в строке не 2 , а 1 или 3, 4....9 переменных записано?
Две переменных прочитает и перейдет к следующей строке. И ничего страшного. Это же Compiler Magic.
northener вне форума Ответить с цитированием
Старый 25.01.2020, 20:17   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

archerix
Используйте read(i); вместо readln;

NetSpace
Цитата:
Сообщение от NetSpace Посмотреть сообщение
а если подсунут файл, где в строке не 2 , а 1 или 3, 4....9 переменных записано?
пришёл к варианту: посимвольное считывание, сшивание в одну строку и потом уже искать символы перевода в строку #13#10 и разбиение на строки.
Я сделал хитрее. LR(1)-парсер. Завёл сигналы и слоты. Если я читаю число, а встречаю NL, то сигнал посылает в слот сообщение о ошибке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 25.01.2020, 22:56   #9
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
archerix
Используйте read(i); вместо readln;


Все это очень хитро звучит. Меня интересует просто считать записанные в несколько колонок в текстовый файл данные, количество колонок и тип данных в них заранее известны
archerix вне форума Ответить с цитированием
Старый 26.01.2020, 02:59   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Используйте read(i); вместо readln;
Зачем? Не верите Паскалевскому/Дельфийскому компилятору? Как же вы вообще до сих пор его используете?
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать файл без расширения. С++ Nikzz Помощь студентам 3 24.10.2017 20:23
Экспорт всех колонок из ListView в .csv файл (Microsoft Excel) FleXik Общие вопросы Delphi 18 12.07.2015 20:10
Как побайтово считать файл GIF? Bubel Visual C++ 1 29.10.2011 02:23
Как побайтово считать файл GIF? Bubel Visual C++ 1 27.10.2011 11:44
Считать wav-файл С++ Skido Помощь студентам 4 30.01.2009 03:06