Читать файл с конца (Delphi)
3553
10
Всем доброго времени суток.
Стоит задача, выбрать из большого текстового файла строки, как правило они находяться в конце, но выбирать с условием отбора подстроки.
Подскажите можно ли в делфях читать файл построчно не с первой к последней строке writeln - пока не конец файла, а наоборот?
Может какой-то счетчик завети по количеству строк, как тогда узнать количество строк в файле?
Стоит задача, выбрать из большого текстового файла строки, как правило они находяться в конце, но выбирать с условием отбора подстроки.
Подскажите можно ли в делфях читать файл построчно не с первой к последней строке writeln - пока не конец файла, а наоборот?
Может какой-то счетчик завети по количеству строк, как тогда узнать количество строк в файле?
Читать файл с конца, помоему такой возможности нет.
Проще на мой взгляд прочитать его весь в компонент имеющий в своей структуре Lines. Например Memo, RichEdit
и д.р.
Memo1.Lines.LoadFromFile(filename).
Lines имеет тип TString. и имеет такие свойства как count-количество. к строкам можно обращаться по индексу
Memo1.Lines.Strings[0]
.......
Memo1.Lines.Strings[count-1]
Проще на мой взгляд прочитать его весь в компонент имеющий в своей структуре Lines. Например Memo, RichEdit
и д.р.
Memo1.Lines.LoadFromFile(filename).
Lines имеет тип TString. и имеет такие свойства как count-количество. к строкам можно обращаться по индексу
Memo1.Lines.Strings[0]
.......
Memo1.Lines.Strings[count-1]
with TStringList.Create do
begin
LoadFromFile(Filename);
for i:=Count-1 downto 0 do
begin
S:=Strings[i];
//и тут делаешь со стокой что хочешь
end;
Destroy;
end;
begin
LoadFromFile(Filename);
for i:=Count-1 downto 0 do
begin
S:=Strings[i];
//и тут делаешь со стокой что хочешь
end;
Destroy;
end;
craxx
рыжий котэ
Только никаких тяжеловесных Memo не надо
Согласен.
У вас изящнее.
Я к сожалению самоучка.
ТОлько забыл индекс поставить s:=strings[i]
У вас изящнее.
Я к сожалению самоучка.
ТОлько забыл индекс поставить s:=strings[i]
craxx
рыжий котэ
Это не я индекс забыл поставить, это индекс
[i]форум интерпретировал как выделение текста курсивом
Сейчас читают
красота и материнство (часть 31)
165021
999
КОФЕЙНЯ
202276
1000
ВЕДИЧЕСКИЙ АСТРОЛОГ, консультация
248537
649
А если файл большой? Грузить его в память целиком будет накладно.
Есть универсальная методика - индексирование строк. Формируется еще индексный файл в котором пишется значение POS(F) начала строки.
Потом перемещаешься с использованием seek в нужное место и в любом порядке.
ЗЫ. одна из рядовых задач 1 курса программистских специальностей...
Есть универсальная методика - индексирование строк. Формируется еще индексный файл в котором пишется значение POS(F) начала строки.
Потом перемещаешься с использованием seek в нужное место и в любом порядке.
ЗЫ. одна из рядовых задач 1 курса программистских специальностей...
одна из рядовых задач 1 курса программистских специальностей...Ну не знаю, не знаю. 3 семестра учился на АСУ(ФПМИ) потом на другом факультете. В мои годы с этим не сталкивался.
Да и работали мы на СМках ужасть был мама негорюй.
А про Delphi слыхать не слыхивали.
Egor_M
experienced
Потом перемещаешься с использованием seek в нужное место и в любом порядке.А смысл сначала читать файл и строить индексы сначала, что бы потом читать его с конца?
Проще сразу найти строчки при первом проходе и мозги не размножать.
А вообще наверняка в дельфе есть способы позиционироваться в потоке, поэтому и файл с конца прочитать должно быть можно.
Не помню я дельфу уже, давно это было...