Как узнать количество строк в файле delphi

Обновлено: 04.07.2024

Как посчитать число строк в текстовом файле без внесения его в СтрингЛист или БуферОбмена.

Словом нужен счётчик для Gauge.

Для Gauge лучше использовать не количество строк/символов/абзацев/и т.д., а, имхо, размер файла. Отмапить в память, потом StrScan на CR в цикле и с подсчетом.
Должно быть быстро.



Для Gauge лучше использовать не количество строк/символов/абзацев/и т.д., а, имхо, размер файла.
Я в самом начале тоже так подумал и попробовал. но для моего случая

- такой вариант недопустим ввиду неправильности отражения хода процесса.

-юсртыхэю 24.01.06, 07:18

Отмапить в память, потом StrScan на CR в цикле и с подсчетом.
Должно быть быстро.
Низя в память, так как размер текстового файла до неприличия велик. боюсь апиемка сдохнет прежде чем засасёт всесь файл.
Ктомуже я в процедуре начисто отказался от использования буфера и СтрингЛиста. всё нужно делать находу.

Спасибо с Increment an ordinal variable (INC). я тоже уже так пробовал, результан меня неустроил.
Может просто криво написал.

Фигня полная получается.

-юсртыхэю 24.01.06, 07:59

Блин, . программу что я пишу расчитана на пень первый с максимум 32 метрами памяти. суть моих ухищрений сечёш. на таком железе может жить тока 95 или 98. А простой юзер незнает где и как, да и вообще что такое файл подкачки.
Ктомуже какой прок в прогамме если она тормозит и жрёт память и файл подкачки раздувает.
Мне лично такая прог-ма неустраевает соответственно и других. и это ничего что я пишу её на P4 - 3Ghz с 1Gb оперативки и с двумя SATA в RAID .

Ктомуже читай внимательно тему. причём сдесь SWAP-файл, я просил алгоритм или пример счётчика.



Возможно, экспериментируя с размером буфера, удастся достичь приемлемых результатов.
Попробуй этот вариант:
HFile := CreateFile(Pchar(FileName), GENERIC_READ, FILE_SHARE_READ, nil,

Для того,чтобы подсчитать количество строк в файле, придется его весь прочитать. Раз его нужно как-то обрабатывать, бессмысленно читать первый раз для подсчета строк, в второй - для обработки с индикацией прогресса.
Лучше поступить так - определить размер файла, и при считывании очередной строки для обработки определять относительную позицию. Псевдокод:

нашли FileLength
BytePos=0
цикл до конца файла
Прочитали строку S
BytePos=BytePos+Length(S)+2 // 2 - на CRLF
Progress=BytePos*100 div FileLength // в процентах
обработка строки
конец цикла

Возможно, экспериментируя с размером буфера, удастся достичь приемлемых результатов.
Попробуй этот вариант:
HFile := CreateFile(Pchar(FileName), GENERIC_READ, FILE_SHARE_READ, nil,

-юсртыхэю 24.01.06, 10:35

Для того,чтобы подсчитать количество строк в файле, придется его весь прочитать. Раз его нужно как-то обрабатывать, бессмысленно читать первый раз для подсчета строк, в второй - для обработки с индикацией прогресса.
Лучше поступить так - определить размер файла, и при считывании очередной строки для обработки определять относительную позицию. Псевдокод:

нашли FileLength
BytePos=0
цикл до конца файла
Прочитали строку S
BytePos=BytePos+Length(S)+2 // 2 - на CRLF
Progress=BytePos*100 div FileLength // в процентах
обработка строки
конец цикла

Ктомуже читай внимательно тему. причём сдесь SWAP-файл, я просил алгоритм или пример счётчика.

Алгоритм тебе был приведён выще а ты сказал что подвисает, а О.С., в таких случаях тогда нужно указывать и железо кампика. ктож знал.

Читайте также: