Страница 1 из 2
элементы в типизированном файле
Добавлено: 21 янв 2014, 20:31
misha_beginner
задача стоит в следующем: нужно не используя оператора seek вставить в типизированный файл вставить любые элементы на начало файла и в середину. но обязательно без seek. была мысль как-то через pos и insert, но не доганяю как это сделать. пожалуйста обьясните
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 01:41
Naeel Maqsudov
Если открыть файл в режиме изменения (чтения и записи), то seek(x) — это reset (прыжок в начало), а потом read (x-1) раз.
Read тоже двигает курсор
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 01:50
misha_beginner
Assign(f),'fail.dat');
Reset(f);
Writeln('vvedi dani');
Readln(тут типа считали);
Writeln('vvedi dani');
Readln(опять например считали);
//дальше что?
read(x-1); ??так я понял?
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 01:54
Naeel Maqsudov
Так я не понял, файл у Вас типизированный или нет?
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 01:57
misha_beginner
да типизированный. было сказано сделать с seek и без него. я уже сделал с seek и понял что это именно типизированный файл.
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 02:00
Naeel Maqsudov
Ну так свой пример с seek дайте. Не писать же мне всё с нуля!
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 02:08
misha_beginner
Код: Выделить всё
type
dani=record
stroka:string[45];
cifra,b:real;
end;
var
sh:dani;
f:file of dani;
d:dani;
begin
Assign(f , 'd:\test.dat');
Rewrite(F);
With sh do begin
writeln('vvedi stroky');
readln(sh.stroka);
Writeln('vvedi cifry');
readln(sh.cifra);
readln(d.b);
end;
Seek(f,0);
Write(f,sh);
seek(f,128);
write(f,d);
Close(F);
End.
вот . извиняюсь
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 02:34
Naeel Maqsudov
Код: Выделить всё
type
dani=record
stroka:string[45];
cifra,b:real;
end;
var
sh:dani;
f:file of dani;
d:dani;
i:integer;
begin
Assign(f , 'c:\tmp\test.dat');
Rewrite(F);
With sh do begin
writeln('vvedi stroky');
readln(sh.stroka);
Writeln('vvedi cifry');
readln(sh.cifra);
readln(d.b);
end;
Seek(f,0);
Write(f,sh);
seek(f,128);
write(f,d);
Close(F);
reset(f);
read(f,d);
writeln('Stroka:',d.stroka,' cifra:',d.cifra,' b:',d.b);
for i:=0 to 127 do read(f,d);
writeln('Stroka:',d.stroka,' cifra:',d.cifra,' b:',d.b);
close(f);
End.
reset(f); — делает фактически Seek(f,0)
а
for i:=0 to 127 do read(f ,d) ; — это как раз замена Seek(f,128), но 127 здесь не абсолютная позиция, а +127 к позиции 1, после того, как одно чтение уже было выполнено
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 02:54
misha_beginner
благодарю вас
Re: элементы в типизированном файле
Добавлено: 22 янв 2014, 04:16
misha_beginner
но всеравно в программе встречаеться вашей seek ... ладно и на том спасибо