|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.07.2009, 18:36 | #1 | |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Загрузка данных из типизированного файла
всем приветик!!!
Вот мое задание Цитата:
Что я не так сделала??? Подскажите пожалуста... Код:
|
|
21.07.2009, 19:12 | #2 |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Ошибки:
1. При записи в файл в процедуре Sohr. Команда write(tmpF, stat); записывает в файл весь массив, т.е. ты сохраняешь массив n раз. 2. При загрузке из файла в процедуре Zagr. Ты считываешь массив n раз, т.к. он был записан несколько раз. + если выключить, а затем снова запустить программу, то при загрузке переменная n будет иметь неопределенное значение (точнее 0) и загруженные данные не будут отображены. Лучше объявить тип файла не как массив, а как файл записей, т.е. Код:
Код:
Код:
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". Последний раз редактировалось Daramant; 21.07.2009 в 19:15. |
21.07.2009, 19:49 | #3 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Daramant
спасибо! очень здорово получилось! Обьясните мне одну вещь - вот вы использовали счетчик, это обязательно нужно??? Код:
|
21.07.2009, 19:56 | #4 |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Мы не знаем сколько записей в файле. Поэтому используем цикл:
while not EOF (tmpF) do При чтении записи увеличиваем i на единицу. ( Inc(i); <=> i := i + 1;) Т.е. первую запись запишем в массив под индексом 1. Вторую под индексом 2. Для подсчета записей я и использую i; После завершения цикла i будет равно количеству записей, прочтенных из файла.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
21.07.2009, 20:05 | #5 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Daramant
спасибо Теперь ясно! Извините за занудство...но я хочу все знать. Вот я просто в качестве эксперимента попробывала без счетчика, но ведь все также считывается... Как это вы обьясните??? Код:
|
21.07.2009, 20:16 | #6 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Просто у Вас условие
Цитата:
|
|
21.07.2009, 20:19 | #7 | ||
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Цитата:
Цитата:
Вызывается процедура. i локальная переменная, автоматически она не инициализируется. Т.е. она имеет какое-то случайное значение. Если это значение будет больше чем размерность массива (100), то будет исключение (ошибка) - выход индекса за пределы массива. У меня i было равно 23 (у тебя, возможно, другое значение). Далее: Считывается первая запись. Она записывается в массив по индексу state[23] (т.к. i = 23). Выводится на экран. Считывается вторая запись. Она записывается в массив по индексу state[23] (т.к. i = 23). Т.е. затерает предыдущую запись. Выводится на экран. И так все записи. Т.е. записи на экран выведутся верно, но в массиве в неизвестном месте (у меня это state[23]) будет находиться лишь последняя запись. Попробуй загрузить таким образом записи, замет сохранить их и опять загрузить. У меня они загрузились не корректно.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". Последний раз редактировалось Daramant; 21.07.2009 в 20:22. |
||
21.07.2009, 20:25 | #8 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
|
21.07.2009, 20:33 | #9 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Я и говорю, что по условию у Вас создать массив записей вводом или чтением из существующего файла. Поэтому при чтении файла нужен счетчик. А просто ввести некоторое количество записей в файл, или вывести их из файла, массив не нужен.
|
21.07.2009, 20:34 | #10 |
Форумчанин
Регистрация: 24.05.2009
Сообщений: 119
|
Daramant
Все поняла теперь!!! СПАСИБО Большое за обьяснения (хотела поставить вам отзыв, только что-то не получается...окно какое-то вылезает) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка данных из файла | JIK | Помощь студентам | 4 | 19.05.2013 12:17 |
Cортировка типизированного файла по 3м признакам | Dremgor | Помощь студентам | 3 | 05.06.2009 14:10 |
загрузка данных из тестового файла | gribog | БД в Delphi | 16 | 19.07.2007 15:06 |