|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2010, 13:24 | #1 |
Пользователь
Регистрация: 04.04.2010
Сообщений: 29
|
Почему не работает процедура?
Вот задача:
Организовать файл записей BAZA, содержащих следующие поля: фамилия, имя, отчество работника, должность, размер зарплаты. Написать программу, выполняющую следующие действия: Ввод с клавиатуры данных о нескольких работниках, вывод на экран информации о человеке, чья фамилия введена с клавиатуры. И прога соответственно: type TBaza = record Familia: string[15]; Name : string[10]; Otchestvo:string[20]; Doljnost:string[20]; Razmer_zarplati:integer; end; var Baza : TBaza; FBaza : file of TBaza; Nom:integer; h:string; procedure Menu; begin WriteLn('1 sozdanie novogo faila'); WriteLn('2 dobavlenie zapisei v fail'); WriteLn('3 pechatb faila'); WriteLn('4 vihod'); end; procedure DobavlDan(Nul0 : Boolean); {Nul0 = True - sozdanie novogo fila; Nul0 = False - dobavlenie zapisei v suschestvuuchii } var ch:char; begin if Nul0 then Rewrite(FBaza) else begin Reset(FBaza); Seek(FBaza, FileSize(FBaza)); end; repeat WriteLn; Write('familia '); ReadLn(Baza.Familia); Write('im9'); ReadLn(Baza.Name); Write('otchestvo '); ReadLn(Baza.Otchestvo); Write('dolgnostb'); Readln(Baza.Doljnost); Write('razmer zarplati'); Readln(Baza.Razmer_zarplati); Write(FBaza, Baza); Write('prodolgitb nabor bazi? (y/n)'); readln(ch); until ch = 'n'; Close(FBaza); WriteLn; end; procedure Print(k:string); { pechat fila zapisei } begin Reset(FBaza); while not Eof(FBaza) do begin Read(FBaza, Baza); with Baza do if Familia = k then WriteLn(Baza.Familia:15, ' | ', Baza.Name:10, ' | ', Baza.Otchestvo:15,' | ', Baza.Doljnost:20,' | ', Baza.Razmer_zarplati:10); end; Close(FBaza); end; begin Assign(FBaza,'baza.dat'); Menu; repeat write('vvedite nomer komandi: '); readln(Nom); case Nom of 1: DobavlDan(True); 2: DobavlDan(False); 3: begin writeln('vvedi iskomuy familiu'); Print(h); end; end; until Nom=4; readln; end. В этой проге не работает процедура Print, когда я ввожу фамилию, мне должно выдать информацию о человеке, а у меня, когда я вкл. пункт Печать и ввожу искомую фамилию ничего не выдает, а просто продолжает работать программа. Помогите найти ошибку пожалуйста. |
16.04.2010, 13:44 | #2 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
У тебя в этой процедуре не хватает одного 'end'. Ты читаешь из файла одну запись и тут же закрываешь файл...
Перемешивай дело с бездельем и не сойдешь с ума...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процедура Window почему-то не работает... | Каt | Помощь студентам | 4 | 09.12.2009 09:08 |
Не работает процедура | Golovastik | SQL, базы данных | 2 | 22.11.2009 14:22 |
почему не работает процедура нажатия клавиши в делфи | buka_14 | Помощь студентам | 3 | 16.04.2009 17:26 |
Процедура не работает | Михаил Юрьевич | Общие вопросы Delphi | 4 | 03.06.2008 07:22 |
не работает хранимая процедура | yulia | БД в Delphi | 11 | 28.05.2007 19:00 |