Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 13:24   #1
bingooo
Пользователь
 
Регистрация: 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, когда я ввожу фамилию, мне должно выдать информацию о человеке, а у меня, когда я вкл. пункт Печать и ввожу искомую фамилию ничего не выдает, а просто продолжает работать программа. Помогите найти ошибку пожалуйста.
bingooo вне форума Ответить с цитированием
Старый 16.04.2010, 13:44   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

У тебя в этой процедуре не хватает одного 'end'. Ты читаешь из файла одну запись и тут же закрываешь файл...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура 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