IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> работа с файлом, запутался с распечаткой
Renbo
сообщение 12.03.2007 23:46
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


 
USES CRT,Printer;

VAR
name:text;

procedure sozdanie;
VAR
s:integer;
push:char;
i:integer;
Begin

assign(name,'test.txt');
rewrite(name);
repeat

writeln('введите данные в фаил:');
write('код отдела - '); readln(s); writeln(name,s);
write('код лаборатории - '); readln(s); writeln(name,s);
write('табельный номер сотрудника - '); readln(s); writeln(name,s);
write('дата(месяц) - '); readln(s); writeln(name,s);
write('код начисления - '); readln(s); writeln(name,s);
write('сумма начисления - '); readln(s); writeln(name,s);
writeln('Хотите ли сделать ещё запись?(Y/N)');
push:=readkey;
until push in ['N','n'];
close(name);
End;

procedure correctirovka;
Var
s:String;
push,otvet:char;
Begin
assign(name,'test.txt');
reset(name);
while not eof(name) do
begin
readln(name,s);
writeln(s);
end;

writeln('Хотите ли вы добавить запись к файлу(Y/N) ?');
otvet:='n';
write(otvet);
repeat
push:=readkey;
gotoxy(wherex-1,wherey);
IF push in ['Y','y','n','N'] then otvet:=push;
write(otvet);
until ord(push)=13;
writeln;

IF otvet in ['Y','y'] then
begin
append(name);
writeln('Добавление записи:');
repeat
write('код отдела - '); readln(s); writeln(name,s);
write('код лаборатории - '); readln(s); writeln(name,s);
write('табельный номер сотрудника - '); readln(s); writeln(name,s);
write('дата(месяц) - '); readln(s); writeln(name,s);
write('код начисления - '); readln(s); writeln(name,s);
write('сумма начисления - '); readln(s); writeln(name,s);
writeln('Хотите ли добавить ещё одну запись?(Y/N)');
push:=readkey;
until push in ['N','n'];
close(name);

IF otvet in ['N','n'] then
begin
writeln('Хотите ли удалить запись(Y/N) ?');
otvet:='n';
write(otvet);
repeat
push:=readkey;
gotoxy(wherex-1,wherey);
IF push in ['Y','y','n','N'] then otvet:=push;
write(otvet);
until ord(push)=13;
writeln;
end;

End;

procedure prosmotr;
VAR
s:string;
i:integer;
Begin
i:=0;
assign(name,'test.txt');
reset(name);
writeln('--------------------------------------------------------------------');
writeln('№':5,' Код Код Табельный Дата Код Сумма ');
writeln(' отдела лаборатории номер (месяц) Начисления Начисления');
writeln('--------------------------------------------------------------------');
while not eof(name) do
begin
inc(i);
write(i:5);
readln(name,s); write(s:7);
readln(name,s); write(s:11);
readln(name,s); write(s:11);
readln(name,s); write(s:9);
readln(name,s); write(s:9);
readln(name,s); write(s:12);
end;
readln;
close(name);
End;

procedure pechatnaprintere;
Begin
writeln(LST,'test.txt');
End;

procedure podmenu1;
VAR
F:integer;
ch:char;
begin
repeat
F:=0;
clrscr;
writeln(' Ведение основного файла: ');
writeln('1 -> Создание нового основного файла');
writeln('2 -> Корректировка основного файла');
writeln('3 -> Просмотр на экране основного файла');
writeln('4 -> Печать основного файла');
writeln('5 -> Возврат в главное меню');
repeat
ch:=readkey;
IF not(ch in ['1'..'5']) then
begin
writeln('неверная клавиша!');
F:=F+1;
if F=4 then
begin
writeln('программа завершена из-за неправильного ввода данных');
writeln('нажмите любую кнопку для выхода');
readkey;
end
else
if F=3 then
begin
writeln('у вас ещё ', 4-F,' попытка');
writeln('выберите существующий пункт подменю');
end
else
begin
writeln('у вас ещё ', 4-F,' попытки');
writeln('выберите существующий пункт подменю');
end;
end;
until (ch in ['1'..'5']) or (F=4);
case ch of
'1': sozdanie;
'2': correctirovka;
'3': prosmotr;
'4': pechatnaprintere
end;
until (F=4) or (ch='5');
end;


Begin
podmenu1;
End.




запутался с procedure prosmotr. Если я создаю несколько записей, то они должны грмотно выводиться по столбцам. А выходит, что всё сбивается и белеберда.... (
Если ещё что-то корявое, то поправьте плизз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"