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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 15:01   #1
tinton
Пользователь
 
Регистрация: 29.10.2011
Сообщений: 25
Печаль запись в текстовый файл.

Reset(f);{открываем файл для чтения и записи}
Seek(f,FileSize(f));{ищем последнюю запись файла}
Write(f,nom);{записываем введеную запись в файл}
Close(f);

это кусок курсовой работы. в выделенной строке выдает "ошибка записи на диск 101"

f связана с именем файла который создаеться. nom имееть тип запись с полями фамилия отчество и тд. до этого все рабоает четко.

подскажите плз в чем может быть причина?
tinton вне форума Ответить с цитированием
Старый 06.05.2012, 15:37   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вообще-то seek к текстовым файлам неприменим.
А для дозаписи в конец текстового файла он открывается append.
s-andriano вне форума Ответить с цитированием
Старый 06.05.2012, 16:39   #3
tinton
Пользователь
 
Регистрация: 29.10.2011
Сообщений: 25
По умолчанию

ошибочный файловый тип - ругается. f идет как файл записей..
tinton вне форума Ответить с цитированием
Старый 06.05.2012, 16:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
101 Disk write error Reported by CloseFile, Write, WriteIn, or Flush if the disk becomes full.
Цитата:
Вообще-то seek к текстовым файлам неприменим.
Автор ошибся в названии темы:
Цитата:
nom имееть тип запись с полями фамилия отчество и тд.
Судя по всему файл всетки типизированный.
Цитата:
tinton
Куда файл то пишешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2012, 16:44   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Приведите больше кода, а лучше весь проект целиком.
Вы же сами написали "текстовый файл", а потом говорите "файл записей". (Stilet опередил)
Это разные вещи.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 06.05.2012, 16:48   #6
tinton
Пользователь
 
Регистрация: 29.10.2011
Сообщений: 25
По умолчанию

Код:
Const
	v=5; {Константа количества кнопок}
	filename='student7.dat'; {Имена файлов}
	filename2='ekzamen.dat';
Label
	M1;{объявление метки}
Type
	massivknopok = array [1..v] of integer;{Тип цвета Массив кнопок от 1 до v(константы), массив целого типа}
	massknim = array [1..v] of string; {Тип Массив имен кнопок}
	Date = record{Тип Дата}
				 day,month,year: word;{word - переменная будет принимать значения в промежутке от 0 до 65536}
	end;
	Zap = record {Запись с полями фамилия, имя и т.п.}
				Fam: string[30];
				Name: string[20];
				Ot4: string[25];
				group: string[10];
				dopusk: string;
				EkzDate: date;{Переменная типа Дата}
				Ocenka: integer;
				KolPerEkz: integer;
	end;

	rtype =^rectype; {Указатель на следующий элемент дин. списка}
	rectype = record {Запись с информаицей о стеденте, и ссылка на следующую запись}
						students: zap;{переменная типа запись}
						next: rtype;{указатель}
	end;

Var  m,d,n,i,pro,crash,k,ni,j,k2,s4: integer;{Переменные целого типа, нужны в качестве счетчиков в циклах, хранения переменных}
		 rk                            : char;{...символьного типа, хранение кода клавишы}
		 i1,st2,st3                    : string;{...строкового типа, нужны для числа переведенного в строку}
		 mass                          : massivknopok;{...типа массива кнопок, хранит цвета кнопок}
		 massi                         : massknim;{...типа массива названия кнопок, хранит названия кнопок}
		 f,f2                          : file of zap;{файл записей, типизированный файл}
		 st,st1,stfirst,stfirst2       : rtype; {Переменные указатели}
		 nom                           : zap;{переменная записи}
		 qest                          : boolean;{переменная логического типа, да-нет}
{---------Процедура заполнения динамического списка из файла student0.dat}
Procedure Duno;
begin
assign(f,filename);
{$I-}
reset(f);
{$I+}
if ioresult>0 then rewrite(f);
i:=0;
new(st);{выделяем память для переменной}
if FileSize(f)<>0 then
 begin
	read(f,nom);{считываем из файла запись}
	st^.students:=nom;{приравниваем записи указателя считанную запись из файла}
	stfirst:=st;{первый элемент динамического списка}
 end
else
 begin
	st^.students:=nom;
	stfirst:=nil;{приравнивание нулю}
 end;
 while not EOF(f) do{пока файл не кончился делаем}
	begin
	 read(f,nom);
	 new(st^.next);
	 st^.next^.students:=nom;{приравнивание следующей записи указателя считанную запись из файла}
	 st:=st^.next;{Переход к следующиму элементу динамического списка}
	 i:=i+1;{счетчик}
	end;
st^.next:=nil;
k:=i+1;{количество элементов в динамическом списке}
close(f);
end;
-Процедура ввода данных о студентах}
Procedure VvodSt;
label 3,4;
begin
clrscr;
closegraph;{свернули графику}
 With nom do
	begin
	 textcolor(white);
	 write('VVedite Imya: ');
	 name:=proverka2(name);
	 write('Vvedite Familiy: ');
	 fam:=proverka2(fam);
	 write('Vvedite Ot4ectvo: ');
	 ot4:=proverka2(ot4);
	 write('Vvedite gruppy: ');
	 group:=proverka2(group);
	 write('Vvedite informaciy o dopuske (+/-): ');
	 3:
	 Readln(dopusk);
	 if (Length(dopusk)>1) then
		begin
		 textcolor(red);
		 writeln('Oshibka!!! Povtorite vvod (+/-) ');
		 textcolor(white);
		 goto 3;
		end;
	 writeln('Vvod datu ekzamena: ');
	 write('Day: '); Ekzdate.day:=proverka(2,1,31);
	 write('Month: '); Ekzdate.month:=proverka(2,1,12);
	 write('Year: '); Ekzdate.year:=proverka(4,1970,2050);
	 if dopusk<>'+' then ocenka:=0 else
		begin
		4:
		write('Vvedite ocenky: '); Readln(ocenka);
		if (ocenka>5) or (ocenka<2) then
		 begin
			textcolor(red);
			writeln('Oshibka!!! Ocenka ot 2 do 5. Povtorite vvod');
			textcolor(white);
			readln(ocenka);
			goto 4;
		 end;
		end;
	 if (ocenka>2) then kolperekz:=0 else
		begin
		 write('Vvedite koli4ectvo pereekzamenovok: ');
		 Readln(KolPerEkz);
		end;
	end;
Reset(f);{открываем файл для чтения и записи}
Seek(f,FileSize(f));{ищем последнюю запись файла}
Write(f,nom);{записываем введеную запись в файл}
Close(f);
Duno;{вызываем процедуру}
textcolor(green);
Writeln('Student ycpeshno dobavlen!!!');
textcolor(14);
writeln('Hotite dobavitb eshe odnogo studenta? (Da=Enter, Vozvrat v glavnoe menu=Esc)');
textcolor(7);
rk:=readkey;
if ord(rk)=13 then VVodSt else
 begin
	GR;
	setcolor(7);
 end;
end;

вот пару процедур относящихся к этому.

Последний раз редактировалось Stilet; 06.05.2012 в 17:06.
tinton вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись из Listview в текстовый файл hitman12 C# (си шарп) 9 24.02.2012 09:48
запись в текстовый файл Александра_69 Общие вопросы Delphi 10 04.11.2011 19:29
Запись в текстовый файл С++ Шиншилка Помощь студентам 2 30.10.2011 15:37
Запись в текстовый файл cr1t Общие вопросы Delphi 5 31.07.2010 19:42
Запись в текстовый файл Xardas Общие вопросы Delphi 9 20.01.2008 13:22