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

Вниз

Как прочитать из конца файла указанное количество строк?   Найти похожие ветки 

 
TAV   (2004-02-29 18:43) [0]

Подскажите кто знает. Есть обычный текстовый файл, возможно не маленький, нужно прочитать 20...30 последних строк. Как это лучше всего сделать?


 
SeZam   (2004-02-29 19:27) [1]

var
MyText:TStringList;
.
.
MyText.LoadFromFile(FileName);

А дальше делай что хочешь.


 
TAV   (2004-02-29 19:42) [2]

>SeZam
Я понимаю что так можно, но скажем если файл 2 метра, а мне нужно всего лишь последних 20 строк, то использование этого метода будет не очень рациональным. Хочется как-то по умному.


 
Palladin ©   (2004-02-29 19:47) [3]

строки надо разбирать

у тебя задача проще, с конца 20..30 строк... ну вот и устанавливай позицию на конец и читай кусками разбирая на строки... наберешь сколько тебе надо тут и чтению конец... кто понял молодец кто не понял F1... :)


 
TAV   (2004-02-29 20:05) [4]

> Palladin
Логику понял, а нельзя ли маленький примерчик. Меня интерисует как с конца прочитать какое-то кол-во байт


 
тихий вовочка ©   (2004-02-29 20:11) [5]

А строки у тебя одинаковой длины? Если нет, то интересно, как ты планируешь скачать пару строк с конца, не зная их позиций? А если про нужное кол-во байт, то лично я использую
CreateFile
SetFilePointer
ReadFile
CloseHandle
И все замечательно работает


 
Palladin ©   (2004-02-29 20:25) [6]

var
f:file;
buf:array [1..1024] of byte;

assignfile(f,filename);reset(f,1);
seek(f,filesize(f)-sizeof(buf)*(BlockNumberFromEnd)-1);
blockread(f,buf[1],sizeof(buf));


 
TAV   (2004-02-29 20:29) [7]

> тихий вовочка
Да, в том то и дело что строки разной длины, но то что мне нужно прочитать находится между разделитьельными символами "****"

Например:
...
...
********
1...
2...
3...
********
...

И мне нужно прочитать все, что находится между звездочками.
Я думаю можно прочитать какое-то кол-во байт, в которых окажется мне нужная информация, потом дойти до первых "***" и прочитать все до вторых "***". Но не знаю как это реализовать. Может кто подскажет?


 
Palladin ©   (2004-02-29 20:31) [8]

да как как... при помощи оператора IF THEN [ELSE]...



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
4-43959
Zin
2004-01-05 13:57
2004.03.14
Как прочитатать кластер или сектор на диске под NTFS?


11-43419
Сергей Апин
2003-06-26 15:44
2004.03.14
Вопрос о доке для начинающих ;)


14-43838
guest_Dmitry
2004-02-22 07:36
2004.03.14
Календарь с DBEditaми


14-43844
MYSTERYO
2004-02-22 11:14
2004.03.14
кнВверх_Щелк или Delphi в гоблиновском переводе ;) Рекомендую


4-43965
yorik
2004-01-04 12:26
2004.03.14
Переименовать папку