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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2008, 21:34   #1
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
Радость Pascal.Записи и файл!!!

Программа содержит запись из 4 полей - ФИО, тел, номер отдела, должность и обрабатывает(удаление, добавление, редактирование и тд). Нужно произвести ввод - вывод из файла!Выводит ошибку в начале процедуры вывода - переполнения стэка!? Что менять??? Заранее Спс!



Код:
Program s23;
uses crt;
type
rabota=record
FIO:string;
tel:string;
nomer:string;
dolgnost:string;
end;
mas=array[1..50] of rabota;
var
zap:mas;
n,l:integer;
f:file of string;
procedure vvod(var zap:mas;var n:integer);
var
i,z:integer;
begin
writeln('Введите 1 для чтения из файла или 2 для ручного ввода данных=>>');
readln(z);
if z=2 then
begin
writeln('Введите количество записей ==>>');
readln(n);
for i:=1 to n do
begin
writeln('Введите ФИО сотрудника=>>');
readln(zap[i].FIO);
writeln('Введите телефонный номер сотрудника=>>');
readln(zap[i].tel);
writeln('Введите номер отдела сотрудника=>>');
readln(zap[i].nomer);
writeln('Введите должность сотрудника=>>');
readln(zap[i].dolgnost);
end;
end;
if z=1 then
begin
assign(f,'c:\qq.txt');
reset(f);
i:=0;n:=0;
while not eof(f) do
begin
i:=i+1;n:=n+1;
with zap[i] do read(f,fio,tel,nomer,dolgnost);
end;
end;
end;

procedure obrabotka(var zap:mas;var n:integer);
var
i,t,g,j,d,c:integer;u,y,s,f:string;
begin
writeln;
writeln('Выберите операцию=>>');
writeln;
writeln('1 - добавление записи');
writeln('2 - удаление записи');
writeln('3 - поиск записи');
writeln('4 - редактирование записи');
readln(t);
if t=1 then
begin
     n:=n+1;
     writeln('Введите ФИО сотрудника=>>');
     readln(zap[n].fio);
     writeln('Введите телефонный номер сотрудника=>>');
     readln(zap[n].tel);
     writeln('Введите номер отдела сотрудника=>>');
     readln(zap[n].nomer);
     writeln('Введите должность сотрудника=>>');
     readln(zap[n].dolgnost);
end;
if t=2 then
begin
writeln('Введите ФИО сотрудника, информацию о котором вы хотите удалить=>>');
readln(f);
          for i:=1 to n do
          if f=zap[i].FIO then
          begin
               for j:=i to n do
               begin
               if j<>n then
               zap[j]:=zap[j+1];
               end;
          end;
n:=n-1;
end;
if t=3 then
begin
writeln;
writeln('Выберите критерий поиска=>>');
writeln;
writeln('1 - ФИО');
writeln('2 - телефонный номер');
writeln('3 - номер отдела');
writeln('4 - должность');
readln(g);
writeln('Введите критерий поиска=>>');
readln(y);
for i:=1 to n do
begin
     if g=1 then
        if zap[i].fio=y then with zap[i] do writeln(fio:23,tel:10,nomer:14,dolgnost:15);
     if g=2 then
        if zap[i].tel=y then with zap[i] do writeln(fio:23,tel:10,nomer:14,dolgnost:15);
     if g=3 then
        if zap[i].nomer=y then with zap[i] do writeln(fio:23,tel:10,nomer:14,dolgnost:15);
     if g=4 then
        if zap[i].dolgnost=y then with zap[i] do writeln(fio:23,tel:10,nomer:14,dolgnost:15);
end;
end;
if t=4 then
begin
writeln('Введите ФИО, для дальнейшего изменения записи о сотруднике=>>');
readln(u);
          for i:=1 to n do
          begin
          if zap[i].fio=u then d:=i;
          end;
          writeln('Выберите поле для редактирования=>>');
          writeln;
          writeln('1 - ФИО');
          writeln('2 - телефонный номер');
          writeln('3 - номер отдела');
          writeln('4 - должность');
          readln(c);
          writeln('Введите новые данные=>>');
          readln(s);
          if c=1 then
             zap[d].fio:=s;
          if c=2 then
             zap[d].tel:=s;
          if c=3 then
             zap[d].nomer:=s;
          if c=4 then
             zap[d].dolgnost:=s;
end;
end;
procedure vivod(zap:mas;n:integer);
var
i:integer;
begin
writeln;
writeln('   _________________________________________________________________');
writeln('  |       ФИО             |  Телефон | Номер отдела |   Должность   |');
writeln('   -----------------------------------------------------------------');
for i:=1 to n do
begin
     with zap[i] do
     begin
          writeln('  |',fio:23,'|',tel:10,'|',nomer:14,'|',dolgnost:15,'|');
          writeln('   -----------------------------------------------------------------');
     end;
end;
assign(f,'c:\qq.txt');
rewrite(f);
for i:=1 to n do begin
with zap[i] do write(f,fio,tel,nomer,dolgnost);
end;
end;
begin
repeat
writeln;
writeln('Выберите операцию=>>');
writeln;
writeln('1 - ввод данных');
writeln('2 - обработка данных');
writeln('3 - вывод данных');
writeln('4 - выход из программы');
writeln;
readln(l);
case l of
1:vvod(zap,n);
2:obrabotka(zap,n);
3:vivod(zap,n);
end;
until l=4;
close(f);
readkey;
end.

Последний раз редактировалось W_P; 20.05.2008 в 21:38.
W_P вне форума Ответить с цитированием
Старый 20.05.2008, 21:35   #2
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
По умолчанию

Жду НарОд!!!!

Последний раз редактировалось W_P; 20.05.2008 в 21:39.
W_P вне форума Ответить с цитированием
Старый 20.05.2008, 22:01   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Сделайте var как в других процедурах.

procedure vivod(var zap:mas;n:integer);

Вы передаете слишком большую структуру.
mas - 4*256*50 ~50K
alexBlack вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal]типизированный файл+записи Fuaran8989 Помощь студентам 4 30.11.2008 14:01
Как записи в СтрингГрид сохранять в ДБ файл Alex_76 Помощь студентам 2 17.06.2008 15:55
задача на записи Pascal kitty Помощь студентам 9 18.04.2008 18:14
Экспорт записи в *.dbf файл Galgi БД в Delphi 2 20.02.2008 07:02
Ошибка при записи в файл txt Alex_Ku Помощь студентам 2 28.04.2007 12:15