Помогите Разобрать модуль [Paskal]
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
В общем:
имеется модуль(его код я привел ниже) в котором 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.
имеется модуль(его код я привел ниже) в котором 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.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Для начала вопрос, а зачем трогать стандартный канал вывода OutPut?
Других имен мало?
Других имен мало?
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
т.е. в режиме "черного экрана" у меня появиться меню подобного рода:
1: Добавить запись в память
2: Сохранить запись в Файл(имя указывашь сам)
3: чтение записи из файля
к примеру выбираешь 1- он выдает функции процедуры AddRec
выбираешь 2 - выдает функции Процедуры SaveRec
выбираешь 3 - Читает все с файла
Но если мне надо добавить, скажем 2 или 3 записи?
Он сохранит 1 запись, должен выписать ее в файл и выйти в главное меню - меню выбора операций.
И вот тут он у меня матюгается...
1: Добавить запись в память
2: Сохранить запись в Файл(имя указывашь сам)
3: чтение записи из файля
к примеру выбираешь 1- он выдает функции процедуры AddRec
выбираешь 2 - выдает функции Процедуры SaveRec
выбираешь 3 - Читает все с файла
Но если мне надо добавить, скажем 2 или 3 записи?
Он сохранит 1 запись, должен выписать ее в файл и выйти в главное меню - меню выбора операций.
И вот тут он у меня матюгается...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
Он горовит, что выходного файла нет, а если не закрыть файл, он все вынесет туда...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Oleg_Rus, если вы выводите запись на экран - совершенно не нужно выполнять Assign, Reset, Close
Кстати Reset - открывает файл для чтения...
Если надо писать в файл, то первыйм параметром в Writeln должна идти файловая переменная
Кстати Reset - открывает файл для чтения...
Если надо писать в файл, то первыйм параметром в Writeln должна идти файловая переменная

- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
т.е. имя и адрес файла?" писал(а):первыйм параметром в Writeln должна идти файловая переменная
Ща Попробуем...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Нет, не имя и адрес, а именно файловая переменная. Которой и присвоено это имя и адрес. Примерно так:Oleg_Rus писал(а):т.е. имя и адрес файла?
Ща Попробуем...
var f: file of .... или var f:text;
begin
assign(f,'c:\pascal\myfile.txt');
вот здесь как раз f - файловая переменная, а 'c:\pascal\myfile.txt' - имя и адрес связанного с ней файла
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
Большое вам всем человеческое спасибо спасибо!
Наконец-то этот модуль заработал...
он у меня в голове уже недели 2 лежал, не знал, как его реализовать, вот решил тут вывесить...
еще раз спасибо!
Тема закрыта!
Наконец-то этот модуль заработал...
он у меня в голове уже недели 2 лежал, не знал, как его реализовать, вот решил тут вывесить...
еще раз спасибо!
Тема закрыта!
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>