Главная страница
    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.46 MB
Время: 0.011 c
4-43948
Duke DEE
2004-01-04 14:48
2004.03.14
Как изменить текст Tedit в чужом окне?


3-43366
ceval
2004-02-15 14:36
2004.03.14
просмотр dbf файлы из FoxPro по сети


1-43671
Grinder
2004-03-01 20:10
2004.03.14
Как сделать форму на панели задачь?


14-43858
race1
2004-01-23 13:32
2004.03.14
winamp multiuser


14-43847
Sergey13
2004-02-17 09:38
2004.03.14
Глюк или фича? Копирование файлов.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский