Из опыта создания универсальных тестовых редакторов — страница 9
стирается, а на его место вписывается новый. Весь процесс сопровождается работой с файлами, которые сначала создаются, открываются, затем копируются, корректируются. Старые варианты файлов удаляются, а новые записываются под их именем: Procedure RedactF; Begin Window(10,10,53,15); TextBackGround(black); TextColor(black); clrscr; Window(20,10,66,15); {открытие начального окна} TextBackGround(blue); clrscr; Writeln('Какой файл редактировать '); Readln(a); {ввод пути к редактируемому файлу } a2:=a; Window(20,10,66,15); {закрытие начального окна} TextBackGround(black); clrscr; Assign(c,a); {связь переменной с файлом вопросов} a:=a+'o'; {изменение расширения} Assign(u,a); {связь переменной с файлом ответов} delete(a,length(a),1); a:=a+'1'; {изменение расширения} Assign(y,a); {создание нового файла вопросов} delete(a,length(a),1); a:=a+'2'; {изменение расширения} Assign(a1,a); {создание нового файла ответов} Reset(c); {установка и загрузка файлов} Reset(u); Rewrite(y); Rewrite(a1); Window(5,5,50,20); {окно просмотра файла} TextBackGround(lightgray); clrscr; Writeln('Вывод вопросов через Enter:'); repeat while not Eoln(c)or(b<>'&') do Begin {просмотр вопросов через Enter} Read(c,b); If b<>'&' Then Write(b); End; Readln(c); Readln; until EOF(c); close(c); {перезапуск файла вопросов} Reset(c); Window(5,5,50,20); {закрытие окна просмотра файла} TextBackGround(black); clrscr; Window(30,5,58,10); {окно номера редактируемого вопроса} TextBackGround(yellow); clrscr; Read(c,b); {считывание количества вопросов} Readln(c,b); d:=ord(b)-ord('0'); Write('№ редактируемого вопроса: '); repeat Readln(z); {ввод № вопроса} If z>d Then Writeln('номер превышает число вопросов'); {проверка существования номера} until z<=d; Window(30,5,58,10); {закрытие окна номера редактируемого вопроса} TextBackGround(black); clrscr; Window(10,10,53,20); {окно вопросов} TextBackGround(lightgray); clrscr; close(c); {перезапуск файла вопросов} Reset(c); p:=0; repeat while not EOLN(c) do Begin {копирование значений в другой файл} Read(c,b); Write(y,b); End; Readln(c); Writeln(y); p:=p+1; until p=z*3; {установка количества копируемых строк} p:=0; while not (p=z-1) do Begin {стирание ненужного вопроса} p:=p+1; Readln(u,b); Writeln(a1,b); End; while not EOLN(c) do Begin {можно было применить и цикл с параметром от 0 до 2} Read(c,b); Write(b); End; Readln(c); Writeln; while not EOLN(c) do Begin {вывод редактируемого вопроса на экран} Read(c,b); Write(b); End; Readln(c); Writeln; while not EOLN(c) do Begin Read(c,b); Write(b); End; Readln(c); Writeln; Writeln('Заменить на:'); Writeln(z,')'); {ввод нового вопроса} Writeln(y,z,')'); Readln(f); Writeln(y,f); Window(55,10,80,15); {окно ответов} TextBackGround(cyan); clrscr; Write('количество ответов на ',z,'-й вопрос '); Readln(e); {ввод количества ответов} Window(10,10,53,20); {окно вопросов} TextBackGround(lightgray); clrscr; For j:=1 to e do Begin {ввод ответов на вопрос} Write(' ',j,')'); Readln(a); Str(j,f); a:=' '+f+')'+a; Write(y,a); End; Writeln(y,'&'); Window(55,10,80,15); {окно ответов} TextBackGround(cyan); clrscr; Write('Правильный ответ: '); Readln(b); {ввод правильного ответа} Window(55,10,80,15); {закрытие окна ответов} TextBackGround(black); clrscr; Writeln(a1,b); repeat while not EOLN(c) do Begin {дозапись значений} Read(c,b); Write(y,b); End; Readln(c); Writeln(y); until EOF(c); Readln(u); while not EOF(u) do Begin {дозапись значений в копируемый файл} Readln(u,b); Writeln(a1,b); End;
Похожие работы
- Рефераты
- Рефераты