Текстовый редактор - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. program AniFoxs_program;
  2. var txtVal,save: string;
  3. F: Text;
  4. label M1,M2;
  5. Begin
  6. Assign (F,'text.txt');
  7. {Rewrite (F);}
  8. WriteLn ('Commands:');
  9. WriteLn ('exit/close - for close this application');
  10. WriteLn ('save - for save your text');
  11. WriteLn ('delete - for delete you text');
  12.  
  13. M1: ReadLn (txtVal);
  14. {Закрытие начало}
  15. If (txtVal = 'exit') OR (txtVal = 'close') Then
  16. Begin
  17. M2: WriteLn ('You want save your text? (Y/N)');
  18. ReadLn (save);
  19. If (save = 'Y') OR (save = 'y') then Close(F)
  20. Else If (save = 'n') OR (save = 'N') then WriteLn
  21. Else
  22. Begin
  23. WriteLn('You should write Y or N');
  24. GoTo M2;
  25. exit;
  26. End;
  27. Exit;
  28. End
  29. {Закрытие конец}
  30. {Сейв начало}
  31. Else If txtVal = 'save' then
  32. Begin
  33. Close(F);
  34. Assign (F,'text.txt');
  35. GoTo M1;
  36. End
  37. {Сейв конец}
  38. Else If txtVal = 'delete' then Rewrite(F)
  39. Else
  40. Begin
  41. WriteLn(F,txtVal);
  42. GoTo M1;
  43. End;
  44. End.
Создал не большой текстовый редактор на Pascal. Голова превратилась в кисель пока это писал. Похоже не когда не привыкну ориентироваться в этом страшном коде. Но не суть. Проблема в том что выдает ошибку exitcode 103 причину не могу найти. Проблема появилась после того как добавил сейв и вопрос при закрытии (Y/N).

Решение задачи: «Текстовый редактор»

textual
Листинг программы
  1. program AniFoxs_program;
  2.  
  3. uses crt;
  4.  
  5. const csize=10000;
  6.  
  7. type tarray=array [1..csize] of string;
  8.  
  9. procedure mycommand;
  10. begin
  11.   writeLn ('Commands:');
  12.   writeLn ('exit       - for close this application');
  13.   writeLn ('save       - for save your text');
  14.   writeLn ('delete     - for delete you text');
  15. end;
  16.  
  17. procedure savetxt(var amas:tarray);
  18. var f:text;i:integer;
  19. begin
  20.   assign(f,'text.txt');
  21.   rewrite(f);
  22.   i:=1;
  23.   while (amas[i]<>'save') and (amas[i]<>'exit') do begin
  24.     writeln(f,amas[i]);
  25.     inc(i);
  26.   end;
  27.   close(f);
  28. end;
  29.  
  30. var s:string;mas:tarray;
  31.     ch:char;i:integer;
  32.  
  33. begin
  34.   clrscr;
  35.   mycommand;
  36.   for i:=1 to csize do begin
  37.     readln(mas[i]);
  38.     if mas[i]='exit' then
  39.       break;
  40.     if mas[i]='delete' then begin
  41.       clrscr;
  42.       mycommand;
  43.     end;
  44.     if mas[i]='save' then savetxt(mas);
  45.   end;
  46.   writeln('save before exiting Y/N ?');
  47.   readln(ch);
  48.   if (ch='y') or (ch='Y') then savetxt(mas);
  49. end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • s: строка;
    • mas: массив типа tarray;
    • ch: символ;
    • i: целое число;
  2. Запущена функция mycommand, которая выводит список команд.
  3. Запущен цикл, который считывает строки из массива mas и выполняет следующие действия:
    • Если строка равна 'exit', то цикл прерывается.
    • Если строка равна 'delete', то экран очищается и выводится список команд.
    • Если строка равна 'save', то вызывается функция savetxt.
  4. Запущен цикл, который считывает строки из массива mas и выполняет следующие действия:
    • Если строка не равна 'save' и 'exit', то она записывается в файл 'text.txt'.
    • Если строка равна 'save', то вызывается функция savetxt.
  5. Выводится вопрос о сохранении изменений перед выходом.
  6. Считывается ответ пользователя и сохраняется в переменной ch.
  7. Если ch равен 'y' или 'Y', то вызывается функция savetxt.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы