GAECHKA
Твоя помощница в решении задач

Ввод данных в типизированный файл

Доброго времени суток! Столкнулся с проблемой, что при повторном обращении к процедуре "vvod", в файле "inf.txt" старые данные (Фамилия и номер) заменяются на новые, а не добавляются к уже имеющимся.

 Program Testing;
 Uses crt;
 
 Type   Data = Record
        Fam: String[20];
        Nomer: 1..1000;
 End;
 
 Palata = array [1..100] of Data;
 ifile = file of Data;
 
 Var count,numb: Word;
     mas: Palata;
     f: ifile;
     choice: Byte;
     poisk: String[20];
 
 procedure vvod;
    Begin
        inc(count);
        with mas[count] do
            Begin
                write('Enter last name:');
                    readln(Fam);
                write('Enter chamber number:');
                    readln(Nomer);
                write(f,mas[count]);
            End;
        close(f);
    End;
 
 procedure vvivod;
    Begin
        writeln('Enter chamber number:');
    End;
 
 Begin // MAIN
 while (true) do
    Begin
        clrscr;
        writeln('1 - Add, 2 - Search.');
        readln(choice);
 
        if choice = 1 then
            Begin         
                assign(f, 'inf.txt');
                {$I-}
                    reset(f);
                {$I+}
                if IOResult = 0 then 
                    Begin
                        vvod;
                    End
                else
                    Begin
                        rewrite(f);
                        vvod;
                    End;
            End;
 
         if choice = 2 then
            Begin
                assign(f, 'inf.txt');
                {$I-}
                    reset(f);
                {$I+}
                if IOResult = 0 then 
                    Begin 
                        vvivod;
                    End
                else
                    Begin
                        writeln('No information available.');
                        writeln('Press any key to access the menu.');
                        readln;
                    End;
            End;
    End;
 End.
0
вопрос задан

Источник


1 ответ
Решение
...
       if choice = 1 then
           Begin
               assign(f, 'inf.txt');
               {$I-}
                   reset(f);
               {$I+}
               if IOResult  0 then
                   Begin
                       rewrite(f);
                   End;
                seek(f,filesize(f));
                vvod;
           End;
 
        if choice = 2 then
...