![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Анжелика |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
Привет все меще раз. Ребят, подскажите, что не так? Модуль выполняет(должен выполнять) перезапись строки текстового файла, но он этого не происходит. Как это исправить?
Код unit ex_spr; interface uses crt; procedure exchange2; implementation var sp,temp:text; naz,name,pole,str1:string; i,k,nomst,nompl:byte; procedure exchange2; begin clrscr; writeln('Vvedite imya spravochnika'); readln(name); assign(sp,name); {ASSIGN(temp,'temp.txt');} reset(sp);{rewrite(temp);} k:=0; writeln('Vvedite nomer izmenyaemoi stroki:'); while not eof(sp) do begin inc(k); str(k,str1); naz:=str1+'. '; for i:=1 to 5 do begin readln(sp,name); naz:=naz+name+' '; end; writeln(naz);NAZ:=''; end; readln(nomst); writeln('Vvedite nomer izmenyaemogo polya'); writeln('1-Nazvanie'); writeln('2-Institut'); writeln('3-Specialnost'); writeln('4-God nabora'); writeln('5-Kol-vo studentov v gruppe'); readln(nompl); writeln('Vvedite novoe znacheniee, vibrannogo poly'); readln(pole); while not eof(sp) do begin inc(k); IF K<> nomst*5+nompl THEN {begin } READLN(SP,NAME) {writeln(temp,name); writeln(name);} { end } ELSE { begin} WRITELN(SP,POLE); {writeln(pole) end; } end; {close(sp);close(temp); rewrite(sp); reset(temp); while not eof(temp) do begin readln(temp,name); writeln(sp,name) end; close(temp); {erase(temp); } close(sp); WRITELN('Операция завершена. Нажмите Enter для продолжения'); readkey; end; end. |
![]() ![]() |
RaV |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Добавь изменение и проверь
|
Анжелика |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
Попробовала, но ниче не получается. Может есть вообще другой принципиальный подход к выполнению данной задачи?
|
Бродяжник |
![]()
Сообщение
#4
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
А вот здесь, поскольку файл текстовый, а не типизированный, надо действовать приблизительно так:
write('enter number of line: '); Но это вообще кривой подход и годится только в качестве задач для студентов. Представить себе, чтобы так работал MS Word... |
Анжелика |
![]() ![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
О, Великие Умы Современности, помогите мне!!! Я не знала, что такую простейшую задачу так сложно осуществить в Pascal-е!!! Мне нужно сделать следующую ерунду:
Модуль, создающий текстовый файл: Код unit cr_spr; interface uses crt; procedure creatiff; implementation var sp:text; name:string; procedure creatiff; begin clrscr; writeln('Vvedite imya spravochnika'); readln(name); assign(sp,name); rewrite(sp); writeln('File sozdan. Dlya prodolzheniya nazhmite Enter'); readkey; end; end. Модуль, заполняющий файл: Код unit add_end_; interface uses crt; procedure add_spr; implementation var sp:text; name,naz:string; procedure add_spr; begin clrscr; writeln('Vvedite imya spravochnika'); readln(name); assign(sp,name); append(sp); repeat writeln('Vvedite nazvanie gruppi'); readln(naz); writeln(sp,naz); writeln('Vvedite nazvanie kafedri'); readln(naz); writeln(sp,naz); writeln('Vvedite nazvanie spechialnosti'); readln(naz); writeln(sp,naz); writeln('Vvedite god nabora'); readln(naz); writeln(sp,naz); writeln('Vvedite kolichestvo studentov v gruppe'); readln(naz); writeln(sp,naz); writeln('Zakonchit vvod dannih?(Y/N)'); readln(naz); until (naz = 'y')or(naz = 'Y'); close(sp); readkey; end; end. Модуль, изменяющий одну из записей, позиция которой вводится(самый проблемный!!!!!!) Код unit ex_spr; interface uses crt; procedure exchange2; implementation var sp,temp:text; naz,name,pole,str1:string; i,k,nomst,nompl:integer; procedure exchange2; begin clrscr; writeln('Vvedite imya spravochnika'); readln(str1); assign(sp,str1); ASSIGN(temp,'temp.txt'); reset(sp);rewrite(temp); k:=0; writeln('Vvedite nomer izmenyaemoi stroki:'); while not eof(sp) do begin inc(k); for i:=1 to 5 do begin readln(sp,name); naz:=naz+name+' '; end; writeln(k,'. ',naz); end; readln(nomst); writeln('Vvedite nomer izmenyaemogo polya'); readln(nompl); writeln('Vvedite novoe znacheniee, vibrannogo polya'); readln(pole); while k <= (nomst*5+nompl)-1 do begin READLN(sp,name); writeln(temp,name); inc(k); end; readln(sp,name); writeln(temp,pole); while not EoF(sp) do begin readln(sp,name); writeln(temp,name) end; close(sp);close(temp);erase(sp); rename(temp,str1); WRITELN(‘Нажмите Enter‘); readkey; end; end. Но все это «чудо» выдает глупость: после выполнения последнего модуля, в исходном файле оказывается лишь значение, введеное с клавиатуры в качестве нового на место заменяемого. Что еще придумать я не знаю! Помогите мне, пожалуйста! Заранее благодарю! |
Бродяжник |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
и вовсе незачем так кричать
по-моему, так |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 17:07 |