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

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

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

 
 Ответить  Открыть новую тему 
> работа с базой записей, поиск удаление
сообщение
Сообщение #1


Новичок
*

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

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


Посмотрите пожалуйста, что не так. (иногда может выбить ошибку 200, но это неважно). В меню записываются фамилии, успешно добавляется, но когда выбираешь показать все записи (не сортировать, по фамилии...) экран пуст. Может что-то неправильно в процедуре Writephone. Или они попросту не сохраняются?

program Phonebook;
uses Crt;
type Phone = record
SurnameS : string[15];
NameS : string[15];
PhoneS : string[15];
AddressS: string[50];
end;
var PhoneF : file of Phone;
PhoneR : Phone;
filename : string;
a : array[1..600] of Phone;
procedure WritePhone;
begin
Assign(PhoneF,filename);
Reset(PhoneF);
ClrScr;
writeln('Vse zapisi: ');
writeln;
while not Eof(PhoneF) do
begin
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
read(PhoneF,PhoneR);
writeln;
write(' ',PhoneR.SurnameS);
write(' ',PhoneR.NameS);
write(' ',PhoneR.PhoneS);
write(' ',PhoneR.AddressS);
end;
Close(PhoneF);
writeln;
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure AddPhone;
begin
Assign(PhoneF,filename);
Reset(PhoneF);
while not Eof(PhoneF) do Read(PhoneF,PhoneR);
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
ClrScr;
writeln('Dobavlenie zapisi: ');
writeln;
Write('Vvedite familiy: ');
readln(PhoneR.SurnameS);
write('Vvedite imya: ');
readln(PhoneR.NameS);
write('Vvedite nomer telefona: ');
readln(PhoneR.PhoneS);
write('Vvedite adres: ');
readln(PhoneR.AddressS);
write(PhoneF,PhoneR);
Close(PhoneF);
writeln;
writeln('Zapis uspehno dobavlena v bazu !!!');
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure DeletePhone;
var temp : file of Phone;
Nazv : string[15];
begin
Assign(PhoneF,filename);
Reset(PhoneF);
Assign(temp,filename);
Rewrite(temp);
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
ClrScr;
writeln('Udalenie zapisi: ');
writeln;
Write('Vvedite familiy: ');
readln(Nazv);
while not Eof(PhoneF) do
begin
Read(PhoneF,PhoneR);
if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);
end;
Close(temp);
Close(PhoneF);
Erase(PhoneF);
Rename(temp,filename);
writeln;
writeln('Zapis uspehno udalena iz bazu !!!');
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure EditPhone;
var Nazv : string[15];
temp : file of Phone;
begin
Assign(PhoneF,filename);
Reset(PhoneF);
Assign(temp,filename);
Rewrite(temp);
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
ClrScr;
writeln('Redaktirovanie zapisi: ');
writeln;
Write('Vvedite familiy, kotoruy hotite izmenit: ');
readln(Nazv);
while not Eof(PhoneF) do
begin
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
Read(PhoneF,PhoneR);
if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);
end;
writeln;
write('Vvedite novuy familiy: ');
readln(PhoneR.SurnameS);
write('Vvedite novoe imya: ');
readln(PhoneR.NameS);
write('Vvedite novyi nomer telefona: ');
readln(PhoneR.PhoneS);
write('Vveddite novyi adres: ');
readln(PhoneR.AddressS);
write(temp,PhoneR);
Close(temp);
Close(PhoneF);
Erase(PhoneF);
Rename(temp,filename);
writeln;
writeln('Zapis uspehno izmenena !!!');
writeln;
write('Nagmite lybuy klavishy ...');
ReadKey;
end;
procedure FindSurname;
var Nazv : string[15];
k : integer;
begin
k:=0;
Assign(PhoneF,filename);
Reset(PhoneF);
ClrScr;
writeln('Poisk zapisi po familii: ');
writeln;
Write('Vvedite familiy: ');
readln(Nazv);
while not Eof(PhoneF) do
begin
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
read(PhoneF,PhoneR);
if PhoneR.SurnameS=Nazv then
begin
writeln;
write(' ',PhoneR.SurnameS);
write(' ',PhoneR.NameS);
write(' ',PhoneR.PhoneS);
write(' ',PhoneR.AddressS);
k:=k+1;
end;
end;
Close(PhoneF);
writeln;
writeln;
writeln('Poisk zavershen, naideno zapisei: ',k);
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure FindPhone;
var Nazv : string[15];
k : integer;
begin
k:=0;
Assign(PhoneF,filename);
Reset(PhoneF);
ClrScr;
writeln('Poisk zapisi po nomeru telefona: ');
writeln;
Write('Vvedite nomer telefona: ');
readln(Nazv);
while not Eof(PhoneF) do
begin
PhoneR.SurnameS:=' ';
PhoneR.NameS:=' ';
PhoneR.PhoneS:=' ';
PhoneR.AddressS:=' ';
read(PhoneF,PhoneR);
if PhoneR.PhoneS=Nazv then
begin
writeln;
write(' ',PhoneR.SurnameS);
write(' ',PhoneR.NameS);
write(' ',PhoneR.PhoneS);
write(' ',PhoneR.AddressS);
k:=k+1;
end;
end;
Close(PhoneF);
writeln;
writeln;
writeln('Poisk zavershen, naideno zapisei: ',k);
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure SortSurname;
var i,j,c: integer;
tr: Phone;
begin
c:=0;
Assign(PhoneF, filename);
Reset(PhoneF);
ClrScr;
writeln('Sortirovka po familii: ');
writeln;
while not Eof(PhoneF) do begin
inc(c,1);
read(PhoneF,a[c]);
end;
for i:=1 to c do
for j:=1 to c-1 do begin
if a[j].SurnameS>a[j+1].SurnameS then begin
tr:=a[j+1];
a[j+1]:=a[j];
a[j]:=tr;
end;
end;
for i:=1 to c do begin
writeln;
write(a[i].SurnameS);
write(' ',a[i].NameS);
write(' ',a[i].PhoneS);
write(' ',a[i].AddressS);
end;
Close(PhoneF);
writeln;
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure SortAddress;
var i,j,c: integer;
tr: Phone;
begin
c:=0;
Assign(PhoneF, filename);
Reset(PhoneF);
ClrScr;
writeln('Sortirovka po adresu: ');
writeln;
while not Eof(PhoneF) do begin
inc(c,1);
read(PhoneF,a[c]);
end;
for i:=1 to c do
for j:=1 to c-1 do begin
if a[j].AddressS>a[j+1].AddressS then begin
tr:=a[j+1];
a[j+1]:=a[j];
a[j]:=tr;
end;
end;
for i:=1 to c do begin
writeln;
write(a[i].SurnameS);
write(' ',a[i].NameS);
write(' ',a[i].PhoneS);
write(' ',a[i].AddressS);
end;
Close(PhoneF);
writeln;
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;
procedure SortPhone;
var i,j,c: integer;
tr: Phone;
begin
c:=0;
Assign(PhoneF, filename);
Reset(PhoneF);
ClrScr;
writeln('Sortirovka po nomeru telefona: ');
writeln;
while not Eof(PhoneF) do begin
inc(c,1);
read(PhoneF,a[c]);
end;
for i:=1 to c do
for j:=1 to c-1 do begin
if a[j].PhoneS>a[j+1].PhoneS then begin
tr:=a[j+1];
a[j+1]:=a[j];
a[j]:=tr;
end;
end;
for i:=1 to c do begin
writeln;
write(a[i].SurnameS);
write(' ',a[i].NameS);
write(' ',a[i].PhoneS);
write(' ',a[i].AddressS);
end;
Close(PhoneF);
writeln;
writeln;
write('Nagmite lybuy klavishu ...');
ReadKey;
end;

procedure SortType;
var b: integer;
begin
repeat
begin
ClrScr;
writeln('"Telefonnyi spravochnik" - meny sortirovki');
writeln;
writeln('1. Ne sortirovat');
writeln('2. Sortirovat po familii');
writeln('3. Sortirovat po adresu');
writeln('4. Sortirovat po nomeru telefona');
writeln('----------------------------');
writeln('5. Vozvrat v glavnoe meny');
writeln;
write('Vyberite punkt meny: ');
readln(b);
case b of
1 : WritePhone;
2 : SortSurname;
3 : SortAddress;
4 : SortPhone;
end;
end;
until b=5;
end;
procedure PhoneMenu;
var b: integer;
begin
repeat
begin
ClrScr;
writeln('"Telefonnyi spravochnik" - glavnoe meny');
writeln;
writeln('1. Pokazat vse zapisi');
writeln('2. Dobavit zapis');
writeln('3. Udalit zapis');
writeln('4. Redaktirovat zapis');
writeln('5. Poisk po familii');
writeln('6. Poisk po nomeru telefona');
writeln('----------------------------');
writeln('7. Vyhod');
writeln;
write('Vyberite punkt meny: ');
readln(b);
case b of
1 : SortType;
2 : AddPhone;
3 : DeletePhone;
4 : EditPhone;
5 : FindSurname;
6 : FindPhone;
end;
end;
until b=7;
end;
begin
ClrScr;
PhoneMenu;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


Цитата(and 1 @ 10.12.2010 22:16) *

Посмотрите пожалуйста, что не так. (иногда может выбить ошибку 200, но это неважно). В меню записываются фамилии, успешно добавляется, но когда выбираешь показать все записи (не сортировать, по фамилии...) экран пуст. Может что-то неправильно в процедуре Writephone. Или они попросту не сохраняются?

У меня всё нормально работает. И у меня вопрос к вам, входной файл, он сам создаётся? и как он называется?Прикрепленное изображение


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


у меня с расширением .pas от Паскаль ABC, а при исправлении ошибок сохраняются файлы с расширением .bak и .exe в ТурбоПаскале 7.0
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
var PhoneF : file of Phone;
PhoneR : Phone;
filename : string; // <--- Вот эта переменная где-то инициализируется?
Можно показать, ГДЕ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


убрал файлнэйм, теперь спрашивает о неизвестном идентификаторе
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Я не просил убирать, я просто намекнул, что если есть переменная, то надо в нее занести название файла, с которым программа работает. Ты этого в программе не сделал. Так каким образом оно вообще должно работать? Присвой переменной FileName значение: имя твоего файла данных...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


покажи как хоть в одной процедуре её указать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






А ее не надо в процедуре указывать. Нужно либо жестко "зашить" имя файла в программу, либо запросить его у пользователя в самом начале выполнения программы:

{ ... }
begin
ClrScr;
FileName := 'MYFILE.DAT'; { <--- Путь не задается - файл будет в текущей директории }
{ или }
{ Write('Введите имя файла: '); ReadLn(FileName); }
PhoneMenu;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


никак не получается, PhoneMenu пишется как неизвестный идентификатор
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Так... Давай-ка присоединяй свою программу файлом, а? Чтоб можно было НЕ КОПИРУЯ (исключим возможность ошибки при копировании полностью) взять и откомпилировать. И посмотреть, что именно не так. А то изменяешь, изменяешь, а что ты там изменяешь - непонятно.

Ты ж говоришь, что программа из первого поста работала у тебя? Что, добавил после ClrScr инициализацию переменной - теперь неизвестный идентификатор? Возникает вопрос а как оно до этого работало? Почему там не было неизвестного идентификатора???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


вот сам файл. Первый пост компилировался, но ВСЕ ЗАПИСИ не просматриваются как у Freedom (второй ответ)

Сообщение отредактировано: and 1 -


Прикрепленные файлы
Прикрепленный файл  000000.PAS ( 7.29 килобайт ) Кол-во скачиваний: 287
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


Цитата(and 1 @ 11.12.2010 18:45) *

вот сам файл. Первый пост компилировался, но ВСЕ ЗАПИСИ не просматриваются как у Freedom (второй ответ)

Поэтому я и спрашивал про входной файл.
У меня заработало потому что я чуть чуть переделал
program Phonebook;
uses Crt;
type Phone = record
SurnameS : string[15];
NameS : string[15];
PhoneS : string[15];
AddressS: string[50];
end;
const filename='phone.txt'; // добавил это, и из переменных убрал filename
var PhoneF : file of Phone;
PhoneR : Phone;
a : array[1..600] of Phone;
......



Сообщение отредактировано: Freedom -


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
вот сам файл.
Это неизмененный файл. Я сказал, что надо с ним делать в посте №8. Ты покажи, КАК ты изменяешь, что у тебя
Цитата
PhoneMenu пишется как неизвестный идентификатор
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


вот исправлено по 12 посту, но выбивает опять ошибку такую что не удается найти файл. Что я совсем запутался в теме Файлы

Assign (PhoneF, filename);
Reset(PhoneF);

Сообщение отредактировано: and 1 -


Прикрепленные файлы
Прикрепленный файл  000000.PAS ( 7.3 килобайт ) Кол-во скачиваний: 278
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


Цитата(and 1 @ 11.12.2010 22:11) *

вот исправлено по 12 посту, но выбивает опять ошибку такую что не удается найти файл. Что я совсем запутался в теме Файлы

Assign (PhoneF, filename);
Reset(PhoneF);

просто создайте в папке с программой файл 000000.txt

Сообщение отредактировано: Freedom -


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


писецццццццццц вроде все работает, благодарен тебе!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 1.06.2024 7:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name