Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type tfile = text;
- function len(a:integer):integer;
- var ans:integer;
- begin
- ans := 0;
- while (a > 0) do
- begin
- a := a div 10;
- ans := ans + 1;
- end;
- len := ans;
- end;
- procedure add_to_end_of_file(fname: string; intext:string);
- var fbuff: tfile;
- buff:string;
- cnt_ln: integer;
- num_ln:string;
- begin
- assign(fbuff, fname);
- reset(fbuff);
- cnt_ln := 0;
- while not eof(fbuff) do
- begin
- readln(fbuff, buff);
- cnt_ln := cnt_ln + 1;
- end;
- cnt_ln := cnt_ln + 1;
- str(cnt_ln, num_ln);
- append(fbuff);
- write(fbuff,num_ln + ':' + intext);
- close(fbuff);
- end;
- procedure edit_file(fname: string; pos:integer; text:string);
- var f:tfile;
- fbuff:tfile;
- i_str:string;
- s:string;
- buff_s:string;
- i, j:integer;
- begin
- assign(f, fname);
- assign(fbuff, './5_buff.txt');
- reset(f);
- rewrite(fbuff);
- i := 0;
- while not eof(f) do
- begin
- i := i + 1;
- if (i <> pos) then
- begin
- readln(f, buff_s);
- append(fbuff);
- writeln(fbuff, buff_s);
- end
- else
- begin
- readln(f, buff_s);
- break;
- end;
- end;
- str(i, i_str);
- writeln(fbuff, i_str + ':' + text);
- i := i + 1;
- while not eof(f) do
- begin
- readln(f, buff_s);
- //delete(buff_s, 1, pos(':', buff_s));
- j := 0;
- while (j <= len(i)) do
- begin
- delete(buff_s, 1, 1);
- j := j + 1;
- end;
- str(i, i_str);
- s := i_str + ':' + buff_s;
- append(fbuff);
- writeln(fbuff, s);
- i := i + 1;
- end;
- readln(f, buff_s);
- j := 0;
- while (j <= len(i)) do
- begin
- delete(buff_s, 1, 1);
- j := j + 1;
- end;
- str(i, i_str);
- s := i_str + ':' + buff_s;
- append(fbuff);
- writeln(fbuff, s);
- rewrite(f);
- reset(fbuff);
- while not eof(fbuff) do
- begin
- append(f);
- readln(fbuff, buff_s);
- writeln(f, buff_s);
- end;
- end;
- procedure remove_from_file(fname: string; pos:integer);
- var f:tfile;
- fbuff:tfile;
- i_str:string;
- s:string;
- buff_s:string;
- i, j:integer;
- begin
- assign(f, fname);
- assign(fbuff, './5_buff.txt');
- reset(f);
- rewrite(fbuff);
- i := 0;
- while not eof(f) do
- begin
- i := i + 1;
- if (i <> pos) then
- begin
- readln(f, buff_s);
- append(fbuff);
- writeln(fbuff, buff_s);
- end
- else
- begin
- readln(f, buff_s);
- break;
- end;
- end;
- while not eof(f) do
- begin
- readln(f, buff_s);
- //delete(buff_s, 1, pos(':', buff_s));
- j := 0;
- while (j <= len(i)) do
- begin
- delete(buff_s, 1, 1);
- j := j + 1;
- end;
- str(i, i_str);
- s := i_str + ':' + buff_s;
- append(fbuff);
- writeln(fbuff, s);
- i := i + 1;
- end;
- readln(f, buff_s);
- j := 0;
- while (j <= len(i)) do
- begin
- delete(buff_s, 1, 1);
- j := j + 1;
- end;
- str(i, i_str);
- s := i_str + ':' + buff_s;
- append(fbuff);
- writeln(fbuff, s);
- rewrite(f);
- reset(fbuff);
- while not eof(fbuff) do
- begin
- append(f);
- readln(fbuff, buff_s);
- writeln(f, buff_s);
- end;
- end;
- function conver_to_base_format(user_ans:string):string;
- var s, buff_s:string;
- begin
- s := '';
- delete(user_ans, 1, pos('[', user_ans));
- buff_s := user_ans;
- delete(buff_s, pos(']', buff_s), length(buff_s) - pos(']', buff_s) + 1);
- s := s + buff_s + ' ';
- delete(user_ans, 1, pos('[', user_ans));
- buff_s := user_ans;
- delete(buff_s, pos(']', buff_s), length(buff_s) - pos(']', buff_s) + 1);
- s := s + buff_s + ' ';
- delete(user_ans, 1, pos('[', user_ans));
- buff_s := user_ans;
- delete(buff_s, pos(']', buff_s), length(buff_s) - pos(']', buff_s) + 1);
- s := s + buff_s + ':';
- delete(user_ans, 1, pos('[', user_ans));
- buff_s := user_ans;
- delete(buff_s, pos(']', buff_s), length(buff_s) - pos(']', buff_s) + 1);
- s := s + buff_s + ':';
- delete(user_ans, 1, pos('[', user_ans));
- buff_s := user_ans;
- delete(buff_s, pos(']', buff_s), length(buff_s) - pos(']', buff_s) + 1);
- s := s + buff_s;
- conver_to_base_format := s;
- end;
- function pos_search_in_file(fname: string; text:string):string;
- var buff_s:string;
- s: string;
- fbuff: tfile;
- begin
- assign(fbuff, fname);
- reset(fbuff);
- while not eof(fbuff) do
- begin
- readln(fbuff, buff_s);
- s := buff_s;
- delete(buff_s, 1, pos(':', buff_s));
- delete(buff_s, pos(' ', buff_s), length(buff_s) - pos(' ', buff_s) + 1);
- if (buff_s = text) then
- begin
- delete(s, 2, length(s) - 1);
- pos_search_in_file := s;
- break;
- end;
- end;
- end;
- function search_in_file(fname: string; text:string):string;
- var buff_s:string;
- s: string;
- fbuff: tfile;
- ans_s: string;
- begin
- ans_s := '';
- if (length(text) = 2) then
- begin
- assign(fbuff, fname);
- reset(fbuff);
- while not eof(fbuff) do
- begin
- readln(fbuff, buff_s);
- s := buff_s;
- delete(buff_s, 1, pos(':', buff_s));
- delete(buff_s, 3, length(buff_s) - 1);
- if (buff_s = text) then
- begin
- delete(s, 1, pos(':', s));
- delete(s, pos(' ', s), length(s) - pos(' ', s) + 1);
- ans_s := ans_s + s + #10;
- end;
- end;
- end
- else
- begin
- assign(fbuff, fname);
- reset(fbuff);
- while not eof(fbuff) do
- begin
- readln(fbuff, buff_s);
- s := buff_s;
- delete(buff_s, 1, pos(':', buff_s));
- delete(buff_s, pos(' ', buff_s), length(buff_s) - pos(' ', buff_s) + 1);
- if (buff_s = text) then
- begin
- delete(s, 1, pos(':', s));
- ans_s := ans_s + s + #10;
- end;
- end;
- end;
- search_in_file := ans_s;
- end;
- var filename:string;
- user_ans:string;
- s:string;
- pos:integer;
- begin
- filename := './5.txt';
- {subs := search_in_file(filename, 'П');
- write(search_in_file(filename, 'П'));
- delete(subs, pos(#10, subs), length(subs) - pos('#10', subs) + 1);
- write(subs);}
- writeln('Добро пожаловать в программу для редактирования сведений об обонентах телефонного узла!');
- write('Вы хотите начать редактирвание?(Д/Н) ');
- readln(user_ans);
- if ( (user_ans = 'Д') or (user_ans = 'д')) then
- begin
- while (true) do
- begin
- writeln('Если хотите добавить новую запись, введите 1.');
- writeln('Если хотите просмотреть уже существующую запись, введите 2.');
- writeln('Если хотите удалить запись, введите 3.');
- writeln('Если хотите отредактировать запись, введите 4.');
- write('Ввод: ');
- readln(user_ans);
- if (user_ans = '1') then
- begin
- write('Введите новые данные, соблюдая формат ввода - [Ф] [И] [О] [адрес] [номер счета], где [] разграничивают поля информации: ');
- readln(user_ans);
- add_to_end_of_file(filename, conver_to_base_format(user_ans));
- end
- else if (user_ans = '2') then
- begin
- write('Введите первую букву фамилии: ');
- readln(user_ans);
- s := search_in_file(filename, user_ans);
- writeln('Список фамилий, начинающихся на эту букву: ');
- write(s);
- write('Введите конкретную фамилию, которая Вас интересует: ');
- readln(user_ans);
- s := search_in_file(filename, user_ans);
- writeln('Запрашиваемая информация по данному человеку: ');
- write(s);
- end
- else if (user_ans = '3') then
- begin
- write('Введите первую букву фамилии: ');
- readln(user_ans);
- s := search_in_file(filename, user_ans);
- writeln('Список фамилий, начинающихся на эту букву: ');
- write(s);
- write('Введите конкретную фамилию, которая Вас интересует: ');
- readln(user_ans);
- s := pos_search_in_file(filename, user_ans);
- val(s, pos);
- remove_from_file(filename, pos);
- end
- else if (user_ans = '4') then
- begin
- write('Введите первую букву фамилии: ');
- readln(user_ans);
- s := search_in_file(filename, user_ans);
- writeln('Список фамилий, начинающихся на эту букву: ');
- write(s);
- write('Введите конкретную фамилию, которая Вас интересует: ');
- readln(user_ans);
- s := pos_search_in_file(filename, user_ans);
- val(s, pos);
- s := search_in_file(filename, user_ans);
- writeln('Запрашиваемая информация по данному человеку: ');
- write(s);
- write('Желаете отредактировать её?(Д/Н)');
- readln(user_ans);
- if ( (user_ans = 'Д') or (user_ans = 'д')) then
- begin
- write('Введите новые данные, соблюдая формат ввода - [Ф] [И] [О] [адрес] [номер счета], где [] разграничивают поля информации: ');
- readln(user_ans);
- edit_file(filename, pos, conver_to_base_format(user_ans));
- end;
- end
- else
- begin
- writeln('Некорректный ввод! Повторите попытку.');
- continue;
- end;
- write('Хотите завершить работу?(Д/Н) ');
- readln(user_ans);
- if ( (user_ans = 'Д') or (user_ans = 'д')) then
- begin
- writeln('До скорой встречи!');
- break;
- end
- else
- begin
- writeln('Тогда продолжим.');
- end
- end;
- end
- else
- begin
- writeln('До скорой встречи!');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement