|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.02.2017, 23:04 | #1 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Чтение из файла построчно переменных разного типа - Pascal ABC
Есть файл исходных данных input.txt. там содержатся данные о сети (точки начала и конца ветвей, марки провода и т.п.)
есть файл "каталог" с марками провода Как проще всего и правльно читать эти данные из файлов ? Пробовал примерно следующим образом Код:
2. Какой разделитель должен быть между переменными в файле который читается с помощью Readln ? Каким образом читается string ? сейчас захватываются лишние пробелы (до и после значения марки провода Name_Line[i]) |
24.02.2017, 10:16 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Ваши данные форматированы. Каждый из параметров занимает определенное число знакомест.
Я бы описал тип запись со строковой переменной с указанием длины строки, и остальными переменными типа real. Читать данные можно через read(), завершая чтение последнего элемента строки процедурой readln(). Код:
PS: Сильно не старался Как-то так, ...
Как-то так, ...
|
24.02.2017, 11:13 | #3 | |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Цитата:
|
|
24.02.2017, 15:59 | #4 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Цитата:
В Паскале строки читаются следующим образом; Если использовать read(), то из строки считывается столько символов, сколько поместится в переменную строкового типа, в которую вы читаете. Если у вас не одна, а несколько колонок текста с разным числом символов, то для каждой колонки описываете переменную string, задавая длину. По умолчанию - переменная string имеет длину 256 байт (1-255 байты - символы, а 0 - число символов в строке). readln() - читает строку до конца. Там, в конце, вставлены Cr (возврат каретки) и Lf (следующая строка). В том случае, когда в строке символов больше, чем помещается в переменную строкового типа, то в переменную передается нужное число символов и выполняется переход указателя на следующую строку. Т.е. не принятый хвост строки теряется. Если читать строки с числами, то разделителем является пробел. Считанное число преобразуется к типу переменной. Если обнаруживается не соответствие (должно быть целого типа, а в считанной подстроке есть разделитель - точка), то Error. PS: Вам лучше поэкспериментировать для лучшего понимания. В качестве дополнительного пояснения предлагаю Т.А. Павловская, Программирование на ЯВУ, Паскаль. Есть в списке литературы, см. Важно. Литература, в конце списка. Как-то так, ...
Как-то так, ...
|
|
24.02.2017, 17:32 | #5 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
если читаешь строку где число, а потом стринг - то разделителя словно совсем нет. все что сразу после числа уходит в этот стринг.
самое логичное это удалить все пробелы у некоторых переменных типа string. Как это сделать самым простым способом ? |
24.02.2017, 17:59 | #6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Да. К сожалению функционал работы со строками в Паскале не столь развит, как, например в VB, где есть куда как приличный набор.
Но вот на просторах сети есть такой сайт: http://aix.ucoz.ru/publ/ne_standartn..._dr/24-1-0-506 Так понимаю, что это хорошее решение. Как-то так, ... PS: Но вот для Free Pascal: http://www.freepascal.org/docs-html/...tils/trim.html Так что ...
Как-то так, ...
Последний раз редактировалось ViktorR; 24.02.2017 в 18:05. |
24.02.2017, 23:20 | #7 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
Как раз в PascalABC.Net есть и Trim и многое другое из linq.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
25.02.2017, 19:36 | #8 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Вот у меня установлен как раз PascalABC.Net но команды Replace и т.п. он не понимает (хотя они указаны в помощи). Я что-то подключить чтоли забыл ?
|
25.02.2017, 22:20 | #9 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Всякий раз, когда у вас возникает ошибка, открывайте поиск в сети и пишите запрос. Так будет существенно быстрее.
PascalABC - это объектно-ориентированный. Т.ч. прямой перенос из обычного Паскаля не тянет. Может вам это поможет: http://pascalabc.net/stati-po-pascal...o-vyrazhaemsya Как-то так, ...
Как-то так, ...
|
25.02.2017, 23:15 | #10 | |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
Спасибо ссылка помогла.
Не первый (и не последний) это язык который приходится осваивать. просто странно что в справке к языку (шли в пакете установки) указаны команды которые не работают. Вот так получилось. Код:
Код:
Цитата:
Последний раз редактировалось bdfy; 25.02.2017 в 23:35. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение из текстового файла данных для типа запись, Pascal. | anton_guitar | Помощь студентам | 1 | 12.05.2015 20:59 |
Чтение из файла полей объекта разного формата | Sheffdmb2010 | Общие вопросы C/C++ | 0 | 31.05.2013 21:48 |
чтение переменных из файла | Игорь Кулакевич | Помощь студентам | 11 | 26.09.2011 19:03 |
Задача на сравнение переменных в Pascal ABC | Лиза_ | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 08.05.2011 22:24 |
Чтение файла построчно | aciiiD | Компоненты Delphi | 11 | 26.08.2009 16:36 |