Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.013 c
3-43278
bobsan
2004-02-09 05:55
2004.03.14
Как заставить автоматически выпадать список в DBGrid


4-43935
electhp
2004-01-08 08:22
2004.03.14
Как получить картинку из чужой памяти?


14-43817
LKan
2004-02-23 07:43
2004.03.14
Оптимальный маршрут


1-43645
Анатолий
2004-03-02 09:09
2004.03.14
перевод строки из win-кодировки в koi8-r


3-43250
Leech
2004-02-13 10:52
2004.03.14
Table:=false; => Error :(





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