Текстовый редактор - Free Pascal
Формулировка задачи:
program AniFoxs_program;
var txtVal,save: string;
F: Text;
label M1,M2;
Begin
Assign (F,'text.txt');
{Rewrite (F);}
WriteLn ('Commands:');
WriteLn ('exit/close - for close this application');
WriteLn ('save - for save your text');
WriteLn ('delete - for delete you text');
M1: ReadLn (txtVal);
{Закрытие начало}
If (txtVal = 'exit') OR (txtVal = 'close') Then
Begin
M2: WriteLn ('You want save your text? (Y/N)');
ReadLn (save);
If (save = 'Y') OR (save = 'y') then Close(F)
Else If (save = 'n') OR (save = 'N') then WriteLn
Else
Begin
WriteLn('You should write Y or N');
GoTo M2;
exit;
End;
Exit;
End
{Закрытие конец}
{Сейв начало}
Else If txtVal = 'save' then
Begin
Close(F);
Assign (F,'text.txt');
GoTo M1;
End
{Сейв конец}
Else If txtVal = 'delete' then Rewrite(F)
Else
Begin
WriteLn(F,txtVal);
GoTo M1;
End;
End.Решение задачи: «Текстовый редактор»
textual
Листинг программы
program AniFoxs_program;
uses crt;
const csize=10000;
type tarray=array [1..csize] of string;
procedure mycommand;
begin
writeLn ('Commands:');
writeLn ('exit - for close this application');
writeLn ('save - for save your text');
writeLn ('delete - for delete you text');
end;
procedure savetxt(var amas:tarray);
var f:text;i:integer;
begin
assign(f,'text.txt');
rewrite(f);
i:=1;
while (amas[i]<>'save') and (amas[i]<>'exit') do begin
writeln(f,amas[i]);
inc(i);
end;
close(f);
end;
var s:string;mas:tarray;
ch:char;i:integer;
begin
clrscr;
mycommand;
for i:=1 to csize do begin
readln(mas[i]);
if mas[i]='exit' then
break;
if mas[i]='delete' then begin
clrscr;
mycommand;
end;
if mas[i]='save' then savetxt(mas);
end;
writeln('save before exiting Y/N ?');
readln(ch);
if (ch='y') or (ch='Y') then savetxt(mas);
end.
Объяснение кода листинга программы
- Объявлены переменные:
- s: строка;
- mas: массив типа tarray;
- ch: символ;
- i: целое число;
- Запущена функция mycommand, которая выводит список команд.
- Запущен цикл, который считывает строки из массива mas и выполняет следующие действия:
- Если строка равна 'exit', то цикл прерывается.
- Если строка равна 'delete', то экран очищается и выводится список команд.
- Если строка равна 'save', то вызывается функция savetxt.
- Запущен цикл, который считывает строки из массива mas и выполняет следующие действия:
- Если строка не равна 'save' и 'exit', то она записывается в файл 'text.txt'.
- Если строка равна 'save', то вызывается функция savetxt.
- Выводится вопрос о сохранении изменений перед выходом.
- Считывается ответ пользователя и сохраняется в переменной ch.
- Если ch равен 'y' или 'Y', то вызывается функция savetxt.