|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.01.2009, 19:33 | #1 |
Пользователь
Регистрация: 13.01.2009
Сообщений: 19
|
Чтение из файла, нужна помощь
Добрый вечер уважаемые форумчане.
Возникла проблема при чтении даных из текстового файла. файл имеет такую структуру: Аношенко Г. 40 40 40 Ракаускайте К. 30 33 33 Терентьев М. 31 34 35 Хардин К. 50 50 50 Юрасова Г. 40 50 45 Лебедев С. 50 46 45 где сперва идет фамилия с инициалами, а после 3 оценки по 3-м модулям. данные файла необходимо записывать в строку. Пример части данной програы написан ниже, вродебы все должно работать но не хочет( надеюсь на ваше понимание и помощь program exe; type yy=record surname:string; NameLetter:string; bal1:integer; bal2:integer; bal3:integer; end; var a:array [1..6] of yy; f:text; i:integer; begin assign (f,'C:\pascal\bin\a.txt'); reset(f); i:=1; while not eof(f) do begin readln(f,a[i]., a[i].NameLetter, a[i].bal1, a[i].bal2, a[i].bal3); i:=i+1; end; close(f); end. Последний раз редактировалось RgnRok; 13.01.2009 в 19:45. |
13.01.2009, 19:38 | #2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Смотри, ты пишешь:
Код:
надо так Код:
|
13.01.2009, 19:43 | #3 |
Пользователь
Регистрация: 13.01.2009
Сообщений: 19
|
ой это я случайно описался сдесь) в программе написано имеено так как ты написал выше. На стадии компилятора все отлично проходит, а вот при запуске нет пишет "недопустимый числовой формат"
|
13.01.2009, 22:19 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
просто так не получится читать!
Обязательно нужно читать строчку из файла в строковую переменную, а дальше выделять нужные куски через Pos() и Copy()... пишу так, приблизительно: Код:
|
13.01.2009, 23:10 | #5 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
Все верно, только при чтении из файла всегда надо проверять на наличие ошибки - как при чтении файла , так и у функции вал второй параметр
|
13.01.2009, 23:26 | #6 |
Пользователь
Регистрация: 13.01.2009
Сообщений: 19
|
[QUOTE=Serge_Bliznykov;186119]просто так не получится читать!
Обязательно нужно читать строчку из файла в строковую переменную, а дальше выделять нужные куски через Pos() и Copy()... QUOTE] Можете пожалуйсто в кратци пояснить почему именно не получится считывать начальным методом. Чтобы я смог понять |
14.01.2009, 00:48 | #7 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
потому что компьютер cтрог в понимании - он не может понять человека, он может выполнять строго определенные функции, определенные языковым синтаксисом - когда вы читаете с консоли, тобишь экран+клавиатура, в терминале, тогда вы можете задавать сколь угодно вводимых значений, потому что тогда компьютер понимает, сколько ему нужно принять данных, введенных пользователем, ибо пользователь вводит их сам, а когда вы читаете из файла, компьютер не может понять, что считать за первую переменную, и допустим, сколько ей выделять символов в строке, а сколь выделять на вторую - он понимает только определенное чтение одной компоненты файла, коеми являются строки, а более мелкими (элементарными) компонентами текстового файла являются символы - вот отталкиваясь от этого компьютер и производит чтение из файла - конечно, когда вы читаете допустим в переменную перечисляемого типа ( целого, вещественного ) файл делает замену из символа в число ( если читаемый символ строко числовой ) - он делает преобразования - как только символ не совпадает с типом переменно, в которую читают, происходит ошибка ввода, проверяемая функцией IOResult <> 0 - при отключенной директиве {$-} - надеюсь все понятно
|
14.01.2009, 02:06 | #8 |
Форумчанин
Регистрация: 02.01.2009
Сообщений: 340
|
to capta1n
хмм... вроде, как я понял, структура входного файла определена заранее, и отхождения от неё не должно быть... так что здесь ваше замечание как-то неуместно... хотя, конечно, очень ценное DelphiWorld 6. Скачай, поставь, и будет тебе счастье=) Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
|
14.01.2009, 04:44 | #9 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
оно уместно, если человек просит объяснить, почему его вводом пользоваться нельзя
|
14.01.2009, 09:23 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
прогоните вот эту программку. может Вам станет чуть понятнее...
Код:
capta1n, я бы просто хотел обратить Ваше внимание на тот факт, что Вы неправы насчёт того, что с консоли это будет читаться как то по другому, не так, как из файла - хоть с консоли (ввод оператора), хоть из текстового файла - правила обработки входных данных будут одни и те же! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужна помощь с добавлением файла | 777UFO777 | Общие вопросы Delphi | 3 | 26.12.2008 12:01 |
чтение из файла | Илья500 | Общие вопросы C/C++ | 26 | 05.12.2008 00:37 |
Чтение файла | [Smarik] | Помощь студентам | 8 | 28.04.2008 22:15 |
чтение файла | vicvtor | Общие вопросы Delphi | 4 | 27.11.2006 12:26 |