11°C
завтра: 17°C
Погода в Перми
11°C
ночью8°C
утром11°C
завтра17°C
Подробно
 94,32
+0.2500
Курс USD ЦБ РФна 18 апреля
94,3242
+0.2500
 100,28
+0.3446
Курс EUR ЦБ РФна 18 апреля
100,2787
+0.3446
  • Всем доброго времени суток.
    Стоит задача, выбрать из большого текстового файла строки, как правило они находяться в конце, но выбирать с условием отбора подстроки.
    Подскажите можно ли в делфях читать файл построчно не с первой к последней строке writeln - пока не конец файла, а наоборот?
    Может какой-то счетчик завети по количеству строк, как тогда узнать количество строк в файле?

    http://link.ac/37Vl9

  • Читать файл с конца, помоему такой возможности нет.

    Проще на мой взгляд прочитать его весь в компонент имеющий в своей структуре 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;

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • что по сути своей тоже самое.

  • Только никаких тяжеловесных Memo не надо :улыб:

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • Согласен.
    У вас изящнее.
    Я к сожалению самоучка. :хммм:
    ТОлько забыл индекс поставить s:=strings[i]

  • Это не я индекс забыл поставить, это индекс
     [i] 
    форум интерпретировал как выделение текста курсивом:улыб:

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • Ха, точно.

  • А если файл большой? Грузить его в память целиком будет накладно.
    Есть универсальная методика - индексирование строк. Формируется еще индексный файл в котором пишется значение POS(F) начала строки.
    Потом перемещаешься с использованием seek в нужное место и в любом порядке.
    ЗЫ. одна из рядовых задач 1 курса программистских специальностей...

  • В ответ на: одна из рядовых задач 1 курса программистских специальностей...
    Ну не знаю, не знаю. 3 семестра учился на АСУ(ФПМИ) потом на другом факультете. В мои годы с этим не сталкивался.
    Да и работали мы на СМках ужасть был мама негорюй.
    А про Delphi слыхать не слыхивали.

  • В ответ на: Потом перемещаешься с использованием seek в нужное место и в любом порядке.
    А смысл сначала читать файл и строить индексы сначала, что бы потом читать его с конца?
    Проще сразу найти строчки при первом проходе и мозги не размножать.

    А вообще наверняка в дельфе есть способы позиционироваться в потоке, поэтому и файл с конца прочитать должно быть можно.
    Не помню я дельфу уже, давно это было...

    Toyota Vitz 2005 1.3-> Mercedes CLK 2002 2.3 Kompressor-> Kia Sportage 2012 Biturbo T-GDI

    Исправлено пользователем Egor_M (10.08.05 19:41)

Записей на странице:

Перейти в форум

Модератор: