как в паскале открыть текстовой файл для записи и чтения одновременно, т.е. у меня цикл до конца файла где происходит сначала запись а потом чтение, но после этих действий он перемещает указатель на начало файла, а мне нодо с того места где мы читали.записывали.
ВОТ ПРОГА:
uses crt;
var f,f1:text;
s,s1,t:string;
begin
clrscr;
assign(f,'c:temp1.txt');
assign(f1,'c:temp11.txt');
reset(f);
readln(f,t);
rewrite(f1);
writeln(f1,t);
close(f1);
while not eof(f) do
begin
readln(f,s);
reset(f1);
while not eof(f1) do
begin
readln(f1,s1);
if s<>s1 then begin
append(f1);
writeln(f1,s);
reset(f1);
end
end
end;
readkey
end.
Юзай не Var F:Text;, а Var F:File;
и соответственно BlockRead & BlockWrite, иначе никак..
Или
Var
FileName:String;
Handle:Word;
Begin
FileName:='temp.txt';
asm
mov ax,3D02h {Открыть файл для чтения/записи}
lea dx,FileName {Смещение к имени}
inc dx {Пропускаем байт - там размер}
int 21h {Обращаемся к ДОС}
mov Handle,ax {Сохраняем дескриптор}
end;
End.
Если тебе нужно на конец файла то:
function seekeof(var A:text);
возвращает для текстового файла, связанного с файловой переменной A, состояние "конец файла".
Что должна делать программа? Сравнивать содержимое 2-х текстовых файлов и если есть отличающиеся строки, то записывать их во второй файл?
Ты делаешь так:
while not eof(f) do
пока не конец файла
begin
прочитал строку
readln(f,s);
и снова открыл файл для чтения, естественно с 1-й позиции
reset(f1);
while not eof(f1) do
begin
аналогично
readln(f1,s1);
и у тебя всегда сравниваются 1-е строки твоих файлов
if s<>s1 then begin
append(f1);
writeln(f1,s);
reset(f1);
Поясни, что тебе нужно?
И, почитай вот это:
http://pascal.sources.ru/faq/insstr.htm