Для решения этой задачи на помощь можно призвать потоки (TFileStream, TMemoryStream). Для поиска конца строк нужно искать пары CR/LF, но это делается очень легко, приблизительно так (я сегодня вечером слишком ленивый для реального кода):
Start := Stream.Position; End := Start; Repeat Stream.Read(Buffer^, 1024); CRPos := FindCR(Buffer^); { где FindCR возвращает 0..1023 для CR, и 1024, если он не найден} Inc(End, CRPos); Until CRPos < 1024; GetMem(MyPChar, End - Start); { Здесь может быть +-1 -- мне лень сегодня проверять! } Stream.Seek(Start); Stream.Read(MyPChar^, End - Start) |
Затем установите CR в конце MyPChar в 0, и сделайте Seek в конец (End + 1), или что-то еще, чтобы пропустить LF.
LazyMan [001703]