Главная страница
    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.47 MB
Время: 0.011 c
1-1139222166
DelphiLexx
2006-02-06 13:36
2006.03.12
Профайлер для Delphi


4-1134995633
psa247
2005-12-19 15:33
2006.03.12
Win32FindData !


2-1140434549
ForX
2006-02-20 14:22
2006.03.12
TQuery and TTable


3-1137401302
fishka
2006-01-16 11:48
2006.03.12
Запись картинки в DBF - файл


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский