Мобильная версия форумов
Открыть
 −13°C
завтра: −7°C
Погода в Перми
−13°C
днем−11°C
вечером−8°C
завтра−7°C
Подробно
 65,51
−0.0252
Курс USD ЦБ РФна 23 февраля
65,5149
−0.0252
 74,33
+0.0369
Курс EUR ЦБ РФна 23 февраля
74,3332
+0.0369
  • activist

    Сообщений: 248

    Всем доброго времени суток.
    Стоит задача, выбрать из большого текстового файла строки, как правило они находяться в конце, но выбирать с условием отбора подстроки.
    Подскажите можно ли в делфях читать файл построчно не с первой к последней строке writeln - пока не конец файла, а наоборот?
    Может какой-то счетчик завети по количеству строк, как тогда узнать количество строк в файле?

    http://link.ac/37Vl9

  • Господин Уэф!

    Анонимный пользователь

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

    Проще на мой взгляд прочитать его весь в компонент имеющий в своей структуре Lines. Например Memo, RichEdit
    и д.р.
    Memo1.Lines.LoadFromFile(filename).
    Lines имеет тип TString. и имеет такие свойства как count-количество. к строкам можно обращаться по индексу
    Memo1.Lines.Strings[0]
    .......
    Memo1.Lines.Strings[count-1]

  • рыжий котэ

    Сообщений: 12083

    with TStringList.Create do
    begin
    LoadFromFile(Filename);
    for i:=Count-1 downto 0 do
    begin
    S:=Strings[i];
    //и тут делаешь со стокой что хочешь
    end;
    Destroy;
    end;

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

  • Господин Уэф!

    Анонимный пользователь

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

  • рыжий котэ

    Сообщений: 12083

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

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

  • Господин Уэф!

    Анонимный пользователь

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

  • рыжий котэ

    Сообщений: 12083

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

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

  • Господин Уэф!

    Анонимный пользователь

    Ха, точно.

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

  • Господин Уэф!

    Анонимный пользователь

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

  • experienced

    Сообщений: 606

    В ответ на: Потом перемещаешься с использованием 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)

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

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

Модератор: