Страница 1 из 1

Помогите Разобрать модуль [Paskal]

Добавлено: 16 дек 2006, 05:51
Oleg_Rus
В общем:
имеется модуль(его код я привел ниже) в котором 2 процедуры
1 процедура добавляет в запись данные, а вторая сохраняет их в файл.
Проблема такая, что после сохранения мне надо работать в режиме "Черного экрана", как это осуществить.
Если просто написать Close(Output); программа начинает материться.
Что делать?


Unit Note;

Interface
Procedure AddRec;
Procedure SaveRec(FileSave: String);

var
a: record
Family: String;
Name: String;
SurName: String;
Phone: Record
Mobile: String;
Home: LongInt;
Work: LongInt;
End;
Address: Record
Region: String;
City: String;
Street: String;
End;
End;

Implementation
Procedure AddRec;
Label L1, L2;
var
k: Byte;
q: Char;
Begin
Write('Input Family: ');
Readln(a.Family);
Write('Input Name: ');
Readln(a.Name);
Write('Input Surname: ');
Readln(a.SurName);
L1: Writeln('Input Phone: ');
Writeln('1: Mobile Phone');
Writeln('2: Home Phone');
Writeln('3: Work Phone');
Write('Choose Phone: ');
Readln(k);
Case k Of
1: Begin
Write('Input Mobile Phone');
Readln(a.Phone.Mobile);
End;
2: Begin
Write('Input Home Phone');
Readln(a.Phone.Home);
End;
3: Begin
Write('Input Work Phone');
Readln(a.Phone.Work);
End;
End;
Write('Do you want to add new Phone? Y/N: ');
Readln(q);
Case q Of
'y': Goto L1;
'n': Goto L2;
End;
L2: Write('Input Region: ');
Readln(a.Address.Region);
Write('Input City');
Readln(a.Address.City);
Write('Input Street: ');
Readln(a.Address.Street);
End;

Procedure SaveRec(FileSave: String);
Begin
Assign(Output,FileSave); Reset(Output);
Writeln(a.Family,' ',a.Name,' ',a.SurName);
Writeln(a.Phone.Mobile,' ',a.Phone.Home,' ',a.Phone.Work);
Writeln(a.Address.Region,' ',a.Address.City,' ',a.Address.Street);
Close(Output);
End;

Begin
End.

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 00:53
Ramzey
Для начала вопрос, а зачем трогать стандартный канал вывода OutPut?
Других имен мало?

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 06:41
Oleg_Rus
т.е. в режиме "черного экрана" у меня появиться меню подобного рода:
1: Добавить запись в память
2: Сохранить запись в Файл(имя указывашь сам)
3: чтение записи из файля
к примеру выбираешь 1- он выдает функции процедуры AddRec
выбираешь 2 - выдает функции Процедуры SaveRec
выбираешь 3 - Читает все с файла
Но если мне надо добавить, скажем 2 или 3 записи?
Он сохранит 1 запись, должен выписать ее в файл и выйти в главное меню - меню выбора операций.
И вот тут он у меня матюгается...

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 06:42
Oleg_Rus
Он горовит, что выходного файла нет, а если не закрыть файл, он все вынесет туда...

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 10:16
Игорь Акопян
Oleg_Rus, если вы выводите запись на экран - совершенно не нужно выполнять Assign, Reset, Close
Кстати Reset - открывает файл для чтения...
Если надо писать в файл, то первыйм параметром в Writeln должна идти файловая переменная

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 11:11
Oleg_Rus
&quot писал(а):первыйм параметром в Writeln должна идти файловая переменная
т.е. имя и адрес файла?
Ща Попробуем...

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 18 дек 2006, 11:19
Хыиуду
Oleg_Rus писал(а):т.е. имя и адрес файла?
Ща Попробуем...
Нет, не имя и адрес, а именно файловая переменная. Которой и присвоено это имя и адрес. Примерно так:
var f: file of .... или var f:text;
begin
assign(f,'c:\pascal\myfile.txt');
вот здесь как раз f - файловая переменная, а 'c:\pascal\myfile.txt' - имя и адрес связанного с ней файла

Re: Помогите Разобрать модуль [Paskal]

Добавлено: 20 дек 2006, 03:29
Oleg_Rus
Большое вам всем человеческое спасибо спасибо!
Наконец-то этот модуль заработал...
он у меня в голове уже недели 2 лежал, не знал, как его реализовать, вот решил тут вывесить...
еще раз спасибо!
Тема закрыта!