Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Работа с текстом   Найти похожие ветки 

 
Firefly ©   (2006-02-19 11:33) [0]

Здравствуйте.
Я хочу найти кол-во строк в файле.
Примерный алгоритм
repeat
 найти конец строки;
 inc(кол-во строк);
until конец файла;
- верен?
p.s. не надо мне говорить что я чайник - я  и сам знаю.


 
Palladin ©   (2006-02-19 11:37) [1]

Function GetLinesCount1(Const p_strFileName:String):Integer;
Begin
With TStringList.Create Do
 Try
  LoadFromFile(p_strFileName);
  Result:=Count;
 Finally
  Free;
 End;
End;


 
ferr ©   (2006-02-19 11:38) [2]

в такой задаче алгоритм только мешает.


 
ferr ©   (2006-02-19 11:38) [3]

лучше бы размер входных данных указал.


 
Firefly ©   (2006-02-19 11:44) [4]

Если вы имеете ввиду кол-во строк - от 0 до нескольких(нескольких десятков) миллионов.

>  [1] Palladin ©   (19.02.06 11:37)

А если количество строк больше диапазона TstringList?


 
Palladin ©   (2006-02-19 11:54) [5]

ну такое бывает только в сказках, что бы текстовый файл больше 4гб, но:

Const
const_buf_size=65536;

Function GetLinesCount2(Const p_strFileName:String):Int64;
Var
Buf:Array of Byte;
i,nReaded:Integer;
Begin
Result:=0;
SetLength(Buf,const_buf_size);
With TFileStream.Create(p_strFileName,fmOpenRead) Do
 Try
  Repeat
   nReaded:=Read(Buf[0],Length(Buf));
   For i:=0 to nReaded-1 Do
    If Buf[i]=13 Then Inc(Result);
  Until nReaded=0;
 Finally
  Free;
 End;
End;


 
begin...end ©   (2006-02-19 11:56) [6]

I := 0;
while not EOF(F) do
begin
 ReadLn(F, S);
 Inc(I)
end


 
Firefly ©   (2006-02-19 12:02) [7]

Я вообще-то просил оценить алгоритм, а не приводить код.
Но все равно всем спасибо.


> [5] Palladin ©   (19.02.06 11:54)

Согласен. Но даже текстовик не больший 4Гб может насчитывать несколько миллионов строк.


 
begin...end ©   (2006-02-19 12:06) [8]

Сорри, в [6] ReadLn(F, S) следует заменить на ReadLn(F).


 
Palladin ©   (2006-02-19 12:09) [9]

при использовании TStringList дело не в количестве строк, а в размере файла


 
Anatoly Podgoretsky ©   (2006-02-19 12:12) [10]

Firefly ©   (19.02.06 11:33)  
begin...end ©   (19.02.06 11:56) в [6] привел грамотную реализацию твоего алгоритма.


 
Карелин Артем ©   (2006-02-19 12:38) [11]

Если использовать список, то:
1) Какая реакция будет на файл больше 64К в Win9Х??
2) Будет ли правильно определено количество строк при наличии непечатных символов типа #0 и символа конца текстового файла???


 
Anatoly Podgoretsky ©   (2006-02-19 12:41) [12]

Карелин Артем ©   (19.02.06 12:38) [11]
Такой файл не является текстовым, соответственно говорить о количестве строк не приходится.


 
Карелин Артем ©   (2006-02-19 12:44) [13]


> Anatoly Podgoretsky ©   (19.02.06 12:41) [12]

Программы типа MultiEditor/Foton досовые могли делать такие текстовые файлы с форматированием


 
Anatoly Podgoretsky ©   (2006-02-19 12:52) [14]

Карелин Артем ©   (19.02.06 12:44) [13]
Файл с форматированием - это не текстовый, а двоичный файл.


 
Firefly ©   (2006-02-19 12:58) [15]

Удалено модератором


 
Firefly ©   (2006-02-19 12:59) [16]

Извиняюсь, клиент глючил.

> Карелин Артем ©   (19.02.06 12:44) [13]

В моем случае работа идет с обычными текстовиками


 
Firefly ©   (2006-02-19 13:28) [17]


> Firefly ©   (19.02.06 12:58) [15]

Никогда не думал, что удостоюсь такой чести:-|



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.045 c
2-1140514284
VitV
2006-02-21 12:31
2006.03.12
ListBox+DblClick-проблема.


4-1135118283
Delphi_is_cool
2005-12-21 01:38
2006.03.12
Как добавить строку


2-1140539927
Незнаище
2006-02-21 19:38
2006.03.12
Локальный компьютер


2-1140564145
Bogdan1024
2006-02-22 02:22
2006.03.12
Пощитать сумму.


15-1139951775
ArtemESC
2006-02-15 00:16
2006.03.12
Компиляторы...