Если файлы не слишком велики, вы можете сделать так:
List := TStringList.Create; try List.LoadFromFile('C:\FILE.TXT'); Gauge.MaxValue := List.Count; finally List.Free; end; |
Мы читаем в память весь текст, и кроме подсчета строк этот код ничего не делает. Другая идея заключается в использовании не счетчика строк, а счетчика байт. В самом начале вы запрашиваете размер файла (используя функцию Delphi FileSize), и в цикле проходите все байты, как вы делали это со строками. Цикл может выглядеть примерно так (предположим, вы используете стандартный паскалевский тип TEXT):
Gauge.MaxValue := FileSize(TextFile); Reset(TextFile); while not eof(TextFile) do begin Readln(TextFile, Line); { Обработка строки } with Gauge do begin Progress := Progress + Length(Line) + 2; { 2 для CR/LF } Refresh; end; end; |
[001372]