Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Файлы

Автор: Deeonis 29.03.2003 19:06

как в паскале открыть  текстовой файл для записи и чтения одновременно, т.е. у меня цикл до конца файла где происходит сначала запись а потом чтение, но после этих действий он перемещает указатель на начало файла, а мне нодо с того места где мы читали.записывали.
ВОТ ПРОГА:
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.

Автор: GLuk 29.03.2003 19:23

Юзай не 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.

Автор: AlaRic 29.03.2003 22:37

Если тебе нужно на конец файла то:
function seekeof(var A:text);
возвращает для текстового файла, связанного с файловой переменной A, состояние "конец файла".

Автор: ozzy 3.04.2003 15:24

Что должна делать программа? Сравнивать содержимое 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