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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2007, 21:14   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию БД на Pascalе

Долбусь уже пару дней. Если есть люди добрые, подскажите, как сделать.

Суть такова, я не знаю, как загрузить файл (в коде Procedure Load; ), где храниться ранее сохраненая мною БД, и далее вывести БД на экран.

Вылаживаю свой код:

Код:
Program KR_2;

Uses crt;

Type
 str24 = string[24];
 rab = record
	num: byte;
	fio: str24;
	god_rozd: integer;
	staz: integer;
	zarplata: integer;
 end;

var
 ld: rab;
 ved: array[1..15] of rab;
 f: file of rab;
 i,j,x,y: integer;
 filename: string;

{===========================================================================}

Procedure Form;
var
 fm: str24;
 rozd,stz,zarpl: integer;

begin
 x:=3;
 y:=5;

 for i:=1 to 15 do
	begin
	 GoToXY(x,y);
		ved[i].num:=i;
		write(i,'.');

	 GoToXY(x+4,y);
		readln(fm);
		if fm = '' then Exit
		 else ved[i].fio:=fm;
		x:=24;

	 GoToXY(x,y);
		readln(rozd);
		if rozd < 0 then Exit
		 else ved[i].god_rozd:=rozd;
		x:=29;

	 GoToXY(x,y);
		readln(stz);
		if stz < 0 then Exit
		 else ved[i].staz:=stz;
		x:=34;

	 GoToXY(x,y);
		readln(zarpl);
		if zarpl < 0 then Exit
		 else ved[i].zarplata:=zarpl;

	 x:=3;
	 inc(y);
	end;
end;

{===========================================================================}

Procedure Save;
begin
 writeln;
 writeln('Imya fayla : ');
	readln(filename);
 filename:=filename+'.txt';
 Assign(f,filename);
 rewrite(f);
 for i:=1 to 15 do write(f,ved[i]);
 close(f);
 writeln('Sohranenie zakoncheno');
end;

{===========================================================================}

Procedure Load;
begin
 clrscr;
 Writeln('Vvedite imya fayla:');
 readln(filename);
 filename:=filename+'.txt';
 Assign(f,filename);
 Reset(f);
 while not Eof(f) do begin
	read(f,ld);
 end;
 Close(f);
end;

{===========================================================================}

begin
 clrscr;
 Load;
 Form;
 Save;
 readln;
end.

Последний раз редактировалось Небесный; 05.12.2007 в 22:38. Причина: Кнопка оформления кода - #code
Небесный вне форума Ответить с цитированием
Старый 06.12.2007, 00:28   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

попробуй при считывании из файла использовать readln вместо read
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 06.12.2007, 06:01   #3
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Судя по всему она даже не сохраняется как положено. В типизированном файле для перехода между записями используеться Seek(f,Номер позиции);

из Procedure Save;
Цитата:
Код:
 for i:=1 to 15 do write(f,ved[i]);
Надо так:

Код:
 for i:=1 to 15 do 
 begin
 seek(f,i);
 write(f,ved[i]);  
 end;
При чтении типиз. файлов не используется eof, надо использовать цикл
Код:
for i:=0 to FileSize(F)-1 do
И внутри цикла чтения не забудь поставить
Код:
seek(f,i);
Viteef вне форума Ответить с цитированием
Старый 06.12.2007, 11:29   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Да Seek используют для перехода по номерам записей, но когда сохраняются типизированные данные. Его можно не писать, запись идёт друг за другом сама собой. Для типизированных используют: Read и Write. Так же можно использовать EOF() для чтения, у меня ни разу небыло ошибок с ним. Это работает и в Delphi и в Pascal. Вот посмотрите очень старую мою прогу на Pascal.

Последний раз редактировалось Alter; 21.02.2008 в 19:22.
Alter вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск