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;
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;
assign(f,'a.txt'); reset(f); while not eof(f) do begin readln(f,tmp); writeln(tmp); end; close(f);
Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???
В TP/BP есть подпрограмма seek(), позволяющая переходить по файлу на любую N-ую запись, при открытие файла для прямого, а не последовательного доступа. Т.е. открываешь файл на прямой доступ. Устанавливаешь указатель на последнюю запись. А потом читаешь в цикле уменьшая № читаемой записи. А есть ли такое в fpc я не подскажу. Если исходить из того, что fpc совместим по коду с TP/BP то можно попробывать ...
seek()
есть, но алгоритм такой-же как и с FileStream я описал.
опять же или строки должны быть одной длины или читать побайтно пока не наткнешься на символ конца строки и считать все что после и есть строка.
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;
Люди где можна почитать про этот tsringlist или посмотреть примеры, а то чёт ничего неполучаетчя ?????
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);
Разумеется для больших программ это не выгодно и очень тормознуто, но на школьном уровне сойдет