- Код: Выделить всё
- assign(f,'a.txt');
 reset(f);
 while not eof(f) do
 begin
 readln(f,tmp);
 writeln(tmp);
 end;
 close(f);
Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???
Модератор: Модераторы
    assign(f,'a.txt');
    reset(f);
    while not eof(f) do
    begin
    readln(f,tmp);
    writeln(tmp);
    end;
    close(f);var FileStream : TFileStream;
    Buffer: PChar;
    Size,vNum: integer;
begin
  FileStream := TFileStream.Create('c:\test.txt',fmOpenRead);
  Size:=10; // должен быть равен строке, незабываем про #13#10
  GetMem(Buffer, Size);
  for vNum := (FileStream.Size div Size)-1 downto 0 do // возможно нужно не div а округление до большего
  begin
   FileStream.Seek(vNum*Size,soFromBeginning);
   FileStream.Read(Buffer[0], Size);
   ShowMessage(Buffer);
  end;
  
  FreeMem(Buffer);
  FileStream.Free;
end;

itwork писал(а):ВОт этот отрывок кода - чтение файла с верху вниз:
- Код: Выделить всё
assign(f,'a.txt');
reset(f);
while not eof(f) do
begin
readln(f,tmp);
writeln(tmp);
end;
close(f);
Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???



GrayEddy писал(а):Как вариант, работа с TStringList.
var
T: TStringList;
I: Integer;
...
T := TStringList.Create;
T.LoadFromFile('d:\demo.txt');
for I := T.Count - 1 downto 0 do
Writeln(T.Strings[I]);
T.Free;
 ?????
 ?????
function fu( var f: text );
var s: string;
begin
if not eof(f) then
  begin
  readln( f, s);
  fu( f );
  writeln( s);
  end;
end;
 ))
))
i:=0;
k:=0;
assign(f,'a.txt');
reset(f);
while not eof(f) do
  begin
    readln;
    i:=i+1; {считаем строки}
  end;
while i > 0 do
  begin
    repeat
      begin
        readln(a[i]); {пишем данные в массив}
        {то бишь пишем и пишем и пишем пока не дойдем до нужной строки}
        k:=k+1;
      end;
    until k=i;
    i:=i-1;
   k:=0;
  end;
close(f);

Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: Google [Bot] и гости: 1