Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание ежедневника, небольшие проблемы, Не могу вывести записи на экран 
:(
    Опции темы
pomkka
Дата 21.12.2010, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.12.2010

Репутация: нет
Всего: нет



Здравствуйте, мне задали сделать простейший ежедневник на паскале. Вот что у меня получилось:
Код


type Elofyear=record
         day:integer;
         months:string;
         data:string;
              end;
     Year=array[1..365] of Elofyear;
     Diary=file of Year;

var i:integer; x:Year; f:Diary;


procedure Work(f:Diary);
var   command:string;   months,data:string;   day:integer;
begin
     writeln('введите команду'); readln(command);
     
     if command='просмотр записей' then
          while not Eof(f) do begin
           read(f,x);
           if x[i].data<>'нет записей' then  begin
               writeln(x[i].months,'   ',x[i].day,': ',x[i].data); end;
          end;

     if command='добавить запись'  then  begin
         writeln('введите месяц'); readln(months);
         writeln('введите число'); readln(day);
         if months='Январь' then begin writeln('введите запись'); readln(x[day].data); write(f,x);   end;
         if months='Февраль' then begin writeln('введите запись'); readln(x[day].data); write(f,x);  end;
         if months='Март' then begin writeln('введите запись'); readln(x[day].data); write(f,x);     end;
         if months='Апрель' then begin writeln('введите запись'); readln(x[day].data); write(f,x);   end;
         if months='Май' then begin writeln('введите запись'); readln(x[day].data); write(f,x);      end;
         if months='Июнь' then begin writeln('введите запись'); readln(x[day].data); write(f,x);     end;
         if months='Июль' then begin writeln('введите запись'); readln(x[day].data); write(f,x);     end;
         if months='Август' then begin writeln('введите запись'); readln(x[day].data); write(f,x);   end;
         if months='Сентябрь' then begin writeln('введите запись'); readln(x[day].data); write(f,x); end;
         if months='Октябрь' then begin writeln('введите запись'); readln(x[day].data); write(f,x);  end;
         if months='Ноябрь' then begin writeln('введите запись'); readln(x[day].data); write(f,x);   end;
         if months='Декабрь' then begin writeln('введите запись'); readln(x[day].data); write(f,x);  end;
                                          end;
                                          
     if command='удалить запись'  then  begin
         writeln('введите месяц'); readln(months);
         writeln('введите число'); readln(day);
         if months='Январь' then begin x[day].data:='нет записей'; write(f,x);   end;
         if months='Февраль' then begin x[day].data:='нет записей'; write(f,x);  end;
         if months='Март' then begin x[day].data:='нет записей'; write(f,x);     end;
         if months='Апрель' then begin x[day].data:='нет записей'; write(f,x);   end;
         if months='Май' then begin x[day].data:='нет записей'; write(f,x);      end;
         if months='Июнь' then begin x[day].data:='нет записей'; write(f,x);     end;
         if months='Июль' then begin x[day].data:='нет записей'; write(f,x);     end;
         if months='Август' then begin x[day].data:='нет записей'; write(f,x);   end;
         if months='Сентябрь' then begin x[day].data:='нет записей'; write(f,x); end;
         if months='Октябрь' then begin x[day].data:='нет записей'; write(f,x);  end;
         if months='Ноябрь' then begin x[day].data:='нет записей'; write(f,x);   end;
         if months='Декабрь' then begin x[day].data:='нет записей'; write(f,x);  end;
                                          end;
     if command<>'конец работы' then Work(f);
end;

begin
    assign(f,'Diary.txt');
    reset(f);
    Work(f);
    close(f);
end.

Вводится все, но вот, вывести записи ну никак не могу! Выручайте, друзья!
Где тут траблы?


Это сообщение отредактировал(а) pomkka - 21.12.2010, 21:13
PM MAIL   Вверх
ФедосеевПавел
Дата 21.12.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 2
Всего: 10



Смотри, что происходит при записи:
 - Переменная x - массив на 365 дней.
 - Вводится с клавиатуры один из его элементов.
 - А записывается в файл уже целый массив.

 Т.е. вместо записи одного массива на 365 дней получаем сохранение в файле нескольких массивов (число которых равно попыткам команды "добавить запись").

Кроме того, нет инициализации массива значениями. А ведь при выводе используются данные из массива. А при вводе в массив заполняется только поле data - month и day остаются незаполненными.

Пока исправь это.

Чтобы избежать массовых if-ов, можно сделать функцию IsMonthValid(VAR Month:String):BOOLEAN которая будет возвращать TRUE, если Month равен 'Январь' и т.д. Тогда код превратится в
Код

     if command='добавить запись'  then  begin
         writeln('введите месяц'); readln(months);
         writeln('введите число'); readln(day);
         if IsMonthValid(months)
         then begin
            writeln('введите запись'); readln(x[day].data); write(f,x);
         end;
                                          
     if command='удалить запись'  then  begin
         writeln('введите месяц'); readln(months);
         writeln('введите число'); readln(day);
         if IsMonthValid(months)
         then begin
            x[day].data:='нет записей'; write(f,x);
         end;

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.