|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.11.2008, 00:39 | #1 |
Пользователь
Регистрация: 14.03.2008
Сообщений: 32
|
Нерабочая процедура
Пишу программу на паскале. Программа рабочая, свои действия выполняет, если не считать одной процедуры, назначение которой удалять запись из файла по введенному имени лекарства одного из поля(всего в записи 4 поля: собственно само nazvanie, summa, srok, strana).
Выкладываю то, что у меня находится в главном варе и саму продедуру. Программа компилируется, но, когда в пункте меню выбираешь эту процедуру, то выскакивает в месте read(kf,sa) ошибка disk read error. Помогите, пожалуйста, исправить. program apteca; uses crt,windos; const days:array[0..6] of string[9]=('Sunday','Monday','Tuesday','Wedn esday','Thursday','Friday','Saturda y'); var y,mth,d,dow:word; h,l,sec,hund:word; type lek=record summa:integer; {stoimost} nazvanie:string[25]; {nazvanie lekarstva} srok:longint; {srok godnosti} strana:string; {proizvoditel} end; const max=100; {kolichestvo zapisej} var kf:file of lek; f1:text; {failovaja peremennaja massiva} f2:text; {failovaja peremennaja dla sortirovannogo massiva} a:array [1..max] of lek; {massiv zapisej} num:integer; {obshee kolichestvo zapisej v massive} i:integer; sel:integer; {vibor punkta menu} key2,key4:string; key1,key3:longint; {kluchi dla poiska, zadavaemie polzovatelem} sum:longint; {summi znachenij polej} err:integer; s:boolean; {kluch,soobshaushij o sortirovannosti massiva} zap1,zap2:lek; {dve sosednie zapisi,obmenivaemie pri sortirovke} m,n:longint; {pola sosednix zapisej sravnivautsa pri sortirovke} {opisanie procedur} procedure menu; forward; procedure zapis; forward; procedure dellekarstva; var tmp:file of lek; sa:lek; nazv:string[25]; begin assign(kf,'spis1'); reset(kf); assign(tmp,'tmp1'); rewrite(tmp); clrscr; writeln('udalenie lekarstva iz bazi'); writeln; writeln('vvedite nazvanie lekarstva'); readln(nazv); while not eof(kf) do begin read(kf,sa); {*****************} if sa.nazvanie<>nazv then write(tmp,sa); end; close(tmp); close(kf); erase(kf); rename(tmp,'spis1'); end; |
07.11.2008, 01:01 | #2 | |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Цитата:
|
|
07.11.2008, 01:10 | #3 |
Пользователь
Регистрация: 14.03.2008
Сообщений: 32
|
Файл был действительно нетипизированный, но если изменить везде spis1 на spis1.txt опять же не работает в том месте.
|
07.11.2008, 01:22 | #4 | ||
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Цитата:
Но объявлен как типизированный Цитата:
Пример создания типизированного файла Код:
|
||
07.11.2008, 01:36 | #5 |
Пользователь
Регистрация: 14.03.2008
Сообщений: 32
|
Если я буду делать rewrit-ом, то у меня всё содержимое файла пропадет. Или предлагаете объявить файл как нетипизированный?
|
07.11.2008, 01:45 | #6 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Господь с вами. Один раз создали в начале, а потом уже не rewrite, а reset использовать надо будет. Также нужна команда seek для перемещению по файлу. А нетипизированные тут вообще не нужны.
|
07.11.2008, 01:56 | #7 |
Пользователь
Регистрация: 14.03.2008
Сообщений: 32
|
Ну, наверное, файл spis1 я ранее создавала и в нем уже что-то есть(другие процедуры). Поэтому rewrite не пойдет.
А с windos всё в порядке. Так и пишится. Это для времени и даты. В units так и написано-windos. |
07.11.2008, 02:03 | #8 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Ну тогда весь код на показывайте (желательно в архиве), либо самостоятельно ищем способы программного создания файла spis1
|
07.11.2008, 10:07 | #9 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
assign(kf,'spis1.dat'); или assign(kf,'spis1.txt');Это смотря какой файл и какое у него расширение. |
|
07.11.2008, 14:03 | #10 |
Пользователь
Регистрация: 14.03.2008
Сообщений: 32
|
Файл вообще без никакого расширения(просто spis1), поэтому имя полное. Я просто пробовала дописывать расширение в коде программы и файл переименовать соответственно.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оконная процедура | HunterMan | Win Api | 5 | 04.06.2008 12:10 |
Хранимая процедура. | nimf | БД в Delphi | 2 | 22.04.2008 13:16 |
Процедура () | GAGARIN-NEW | Помощь студентам | 3 | 17.12.2007 21:42 |
процедура sееk | Snake_ua | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 02.11.2007 16:22 |
процедура | Sergik1977 | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 28.10.2007 16:36 |