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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2009, 03:51   #1
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию Pascal комбинированные типы

Здорова всем.
такая проблема:
есть две программы, одна из которых создаёт файл, а другая его просматривает.
Создал комбинированный тип с переменными, которые записываются данные. Хочу сделать массив - тоесть чтобы записать несколько значений. Вроде создался но вторая программа при попытке её запустить пишет disc read error что делать?
Хотя если массивы не делать и убрать всякие repeat'ы и for'ы то всё в порядке.
Первая программа:
Код:
uses crt;

type
abonent = record
contin: integer;
ppmor, ppaft, ppeve, ppnig, svmor, svaft, sveve, svnig: real;
end;

var
db: file of abonent;
myabonent: array [1..100] of abonent;
newzap,x:integer;

begin
clrscr;
x:=0;
assign(db, 'c:\mydb.dat');
{$I-}reset(db);
if ioresult<>0 then
rewrite(db);
seek(db,0);
repeat
inc(x);
writeln('Введите цену, действующую с понедельника по пятницу для разного времени суток');
writeln('');
writeln('Утро 06:00 - 12:00');
writeln('');
readln(myabonent[x].ppmor);
writeln('');
writeln('День 12:00 - 18:00');
writeln('');
readln(myabonent[x].ppaft);
writeln('');
writeln('Вечер 18:00-00:00');
writeln('');
readln(myabonent[x].ppeve);
writeln('');
writeln('Ночь 00:00-06:00');
writeln('');
readln(myabonent[x].ppnig);
writeln('');
writeln('Введите цену, действующую с субботы по воскресенье для разного времени суток');
writeln('');
writeln('Утро 06:00 - 12:00');
writeln('');
readln(myabonent[x].svmor);
writeln('');
writeln('День 12:00 - 18:00');
writeln('');
readln(myabonent[x].svaft);
writeln('');
writeln('Вечер 18:00-00:00');
writeln('');
readln(myabonent[x].sveve);
writeln('');
writeln('Ночь 00:00-06:00');
writeln('');
readln(myabonent[x].svnig);
writeln('');
writeln('Введите продолжительность разговора (CEK.)');
writeln('');
readln(myabonent[x].contin);
write(db, myabonent[x]);
writeln ('Добавить новую запись?');
readln (newzap);
if newzap=0 then
break;
until x>100;
close(db);
readkey;
end.
вторая:

Код:
uses crt;
type
abonent = record
ppmor, ppaft, ppeve, ppnig, svmor, svaft, sveve, svnig: real;
contin: integer;
end;
var
db: file of abonent;
myabonent: array[1..100] of abonent;
code,x:integer;
begin
clrscr;
assign(db,'c:\mydb.dat');
reset(db);
code := IOresult;
if code<>0 then begin
writeln ('Ошибка при открытии файла');
case code  of
2 : write('Файл не найден');
152 : write('Маршрут не найден');
5 : write('Запрет доступа к файлу');
12 : write('Некорректный код доступа к файлу');
end;
readkey;
exit;
end
else
x:=1;
readkey;
seek(db,0);
for x:=1 to 3 do begin
read(db, myabonent[x]);
writeln ('Понедельник-пятница');
writeln('');
write (' Утро ');
writeln(myabonent[x].ppmor:2:2,' руб. | ');
write (' День ');
writeln(myabonent[x].ppaft:2:2,' руб. | ');
write ('Вечер ');
writeln(myabonent[x].ppeve:2:2,' руб. | ');
write (' Ночь ');
writeln(myabonent[x].ppnig:2:2,' руб. | ');
writeln('');
writeln ('Суббота-воскресенье');
writeln('');
write (' Утро ');
writeln(myabonent[x].svmor:2:2,' руб. | ');
write (' День ');
writeln(myabonent[x].svaft:2:2,' руб. | ');
write ('Вечер ');
writeln(myabonent[x].sveve:2:2,' руб. | ');
write (' Ночь ');
writeln(myabonent[x].svnig:2:2,' руб. | ');
writeln('');
write ('Продолжительность (CEK.) ');
writeln(myabonent[x].contin,'| ');
end;
close(db);
readkey;
{$i+}
end.
файлы прилагаются
Вложения
Тип файла: zip PASCAL.zip (1.3 Кб, 10 просмотров)
Rus 47 вне форума Ответить с цитированием
Старый 22.02.2009, 07:38   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Не знаю что у Вас происходит, но у меня нормально открывает файл и выводит информацию на экран.
puporev вне форума Ответить с цитированием
Старый 22.02.2009, 08:15   #3
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

Хорошо...а с чем может быть связана ошибка disc read error?
Rus 47 вне форума Ответить с цитированием
Старый 22.02.2009, 09:13   #4
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

В универе у меня была такая ошибка потому что пользователю не разрешалось изменять отдельные папки. Или возможно адрес некорректен
вместо c:\mydb.dat
попробуй
c:\\mydb.dat
или
c://mydb.dat

как получится

From Stilet: Паскаль и Си весчи разные и пути в них по разному пишутся.

Последний раз редактировалось Stilet; 23.02.2009 в 09:43.
XeN0N вне форума Ответить с цитированием
Старый 22.02.2009, 09:17   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Попробовал прочитать файл в первой программе, все нормально. После этого попробовал прочитать второй, выкинуло эту же ошибку. Убрал из первого файла возможность читать, вторая программа стала открывать нормально, но выдает какую-то чушь, совсем не то, что вводил. Короче надо разбираться.
А ошибка видимо все таки Паскалевская
100 Disk read error (Ошибка чтения с диска).
Генерируется процедурой READ в типизированном файле в случае, если Вы пытаетесь осуществить считывание из полностью прочитанного файла.
Хотя нельзя исключить и другое ее происхождение. Ведь у Вас в первой программе не предусмотрено чтение, это я экспериментировал.

Вот, выкинул из программ всякую чушь прошлого века, которую никогда не пишу, видимо что-то не так написано, и все нормально работает. Проверь у себя там, где я выкинул.
Вложения
Тип файла: rar PASCAL.rar (27.1 Кб, 8 просмотров)

Последний раз редактировалось Stilet; 23.02.2009 в 09:42.
puporev вне форума Ответить с цитированием
Старый 22.02.2009, 17:31   #6
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

puporev проверил, та же самая ошибка...
Rus 47 вне форума Ответить с цитированием
Старый 22.02.2009, 17:36   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Значит вероятно дело не в программе. У меня нормально работает. Раза 3 прогнал, все нормально. Может ты опять чего поправил?
Еще раз скину с файлом BD. Кинь его на диск С и запусти *.exe второй программы, должно сразу открыть запись. Если нет, то не знаю.
Вложения
Тип файла: rar PASCAL-1.rar (27.3 Кб, 12 просмотров)

Последний раз редактировалось puporev; 22.02.2009 в 17:42.
puporev вне форума Ответить с цитированием
Старый 22.02.2009, 17:48   #8
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

Странно, ошибку пишет (Disc read error), но выводит всё правильно (если alt+f5 нажать ). Спасибо puporev!!!
Rus 47 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинированные типы melikyan Помощь студентам 5 10.02.2009 21:41
Комбинированные типы данных и массивы mar4elo Общие вопросы Delphi 11 01.12.2008 10:41
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Строковые типы SunKnight Общие вопросы Delphi 8 07.05.2008 15:46
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03