Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Количество строк


Страницы:   1 2

FANAT ©   (2005-05-30 07:17:00) 

Или такого нет.... или я забыл....
как подсчитать количество строк в текстовом файле и взять предпоследнюю строку?


BFG9k   (2005-05-30 22:17:00) [1]

radian :

Кажется борланд не рекомендует использовать старые паскалевские функции вроде read, write и т.д. Как насчет FileCreate (или CreateFile , не помню точно) , FileRead и FileWrite ?


raidan   (2005-05-30 22:10:00) [2]

Не, старый добрый blockread (8192) на слабеньком П3-500 всех уел :)
С четырехкратным превосходством над ReadLn на файлике в 52 метра (строка от 1 до 100 символов рандомом) и двукратным на файлике в 210 метров (строка 19 символов длиной всегда)...


BFG9k   (2005-05-30 21:50:00) [3]


> Anatoly Podgoretsky ©   (30.05.05 20:01) [18]
> BFG9k ©   (30.05.05 18:51) [17]
> Правильно, поскольку оправдываться нужно тебе.


Обойдемся без демагогии. Между "считать" и "сосчитать" есть кое-какая разница.


raidan   (2005-05-30 21:41:00) [4]

>Чапаев ©   (30.05.05 21:23) [20]
С другой стороны, нужно попробовать read'ом - читать посимвольно :)))
Ща поэкспериментирую...


Чапаев   (2005-05-30 21:23:00) [5]

> Я б его blockread'ом ел и парсил бы на количество #13#10 :)
Причём читал бы с конца блоками по 512..8192 байта.


raidan   (2005-05-30 20:38:00) [6]

Я б его blockread'ом ел и парсил бы на количество #13#10 :)


Anatoly Podgoretsky   (2005-05-30 20:01:00) [7]

BFG9k ©   (30.05.05 18:51) [17]
Правильно, поскольку оправдываться нужно тебе.


BFG9k   (2005-05-30 18:51:00) [8]

2 KilkennyCat :

> В принципе, и строки сосчитать так будет быстрее


Нет смысла оправдываться :)


KilkennyCat   (2005-05-30 18:15:00) [9]


> [15] BFG9k ©   (30.05.05 17:17)

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


BFG9k   (2005-05-30 17:17:00) [10]


> KilkennyCat ©   (30.05.05 13:38) [13]
>
> Логично. Просто просмотреть файл с конца до нужного перевода.
> В принципе, и строки сосчитать так будет быстрее. Только
> не методом ReadLn :))


Подсчет строк с конца файла по скорости равен (а возможно и медленнее) подсчету с начала. Для того чтобы сосчитать строки, нужно сосчитать ВСЕ символы перевода строк в файле. Для этого так или иначе придется читать файл целиком.


Alx2   (2005-05-30 13:44:00) [11]

Да. Офигенная проблема...


KilkennyCat   (2005-05-30 13:38:00) [12]


> [12] MBo ©   (30.05.05 13:27)

Логично. Просто просмотреть файл с конца до нужного перевода. В принципе, и строки сосчитать так будет быстрее. Только не методом ReadLn :))


MBo   (2005-05-30 13:27:00) [13]

маленький вопросик автору ветки - есть ли нужда считать строки?
Если задача состоит только в выделении предпоследней - то этого вообще-то не требуется...


TUser   (2005-05-30 11:44:00) [14]

Хм, действительно - убедился в ложности своих убеждений.


Alx2   (2005-05-30 10:16:00) [15]

Anatoly Podgoretsky ©   (30.05.05 10:09) [9]
Нет, Анатолий. Спасибо. Я, возможно, и извращенец кое в чем. Но сие уже выходит за все границы :))


Anatoly Podgoretsky   (2005-05-30 10:09:00) [16]

Alx2 ©   (30.05.05 08:31) [6]
Лучше бы ты дождался, тогда наверно удивление было бы еще больше.
Предлагаю провести эксперимент, сделать файлик скажем из одного миллиона строк из одного символа и загрузить в TStringList при этом понаблюдать за расходом памяти. Только на всякий случай запасись валидолом.


Alx2   (2005-05-30 08:42:00) [17]

TUser ©   (30.05.05 8:36) [7]

Но ведь убедиться самому недолго?


TUser   (2005-05-30 08:36:00) [18]

Чего-то не то проверял. На больших файлах TStringList как раз намного быстрее, а на маленьких файлах - разница практически незаметна


Alx2   (2005-05-30 08:31:00) [19]

TUser ©   (30.05.05 7:41) [4]
Проверил на 700 Mb файле.
Вариант с Readln ~ 35 сек.
Вариант с TstringList не дождался - ждал более 15 мин.

Машина P4 1800 с 512 Mb RAM

На мелочи, действительно, TStringList быстрее на ~20-25% засчет чтения файла "целиком". Но ростом размера файла идет почти экспоненциальный спад производительности, когда места в памяти недостаточно.
И оно надо - все целиком в память?


Alx2   (2005-05-30 07:42:00) [20]

>Rep ©   (30.05.05 07:30)
>TUser ©   (30.05.05 07:33)

Вот все мало вам тормозных программ :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо