Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.29.189] |
|
Сообщ.
#1
,
|
|
|
Hi многоуважаемый ALL,
можно ли заставить ТР6 читать/писать построчно (readln/writeln) файл в UNIXовом формате, т.е. у которого признак конца строки - не chr(13)+chr(10), а просто chr(10)? |
Сообщ.
#2
,
|
|
|
Через ReadLn/WriteLn нельзя... Надо заменить на Read/Write...
|
Сообщ.
#3
,
|
|
|
То бишь... WriteLn(F, 'Строчка') заменяешь на Write(F, 'Строчка'#10)
|
Сообщ.
#4
,
|
|
|
А ReadLn на что заменять?
Read (F, Char) замедляет прогу в 10-12 раз. А чтение блоками - очень усложняет задачу. Поставлю вопрос конкретнее. Есть большой файл, представляющий собой архив почты и, соответственно, состоящий из многих писем. На эти письма его и надо разрезать. Признак нового письма - ключевое слово ('Received') в начале строки. Файлы могут быть как в MSDOS, так и в UNIX-кодировке. Can anybody F1 me? |
Сообщ.
#5
,
|
|
|
а что сложного в чтении блоками? прочитать блок, заменить все CR на NULL - вот и готовая строка, остается только сканировать блок на нули и копировать в переменные.
Если это сложно - можно просто после сканирования записать строки во временный файл с добавлением LF |
Сообщ.
#6
,
|
|
|
Для последнего случая, конечно же, во время, а не после :-)
|
Сообщ.
#7
,
|
|
|
2 NOPIK: ...что заметно ускорит работу
2 РусскийСашка: Читай болками и добавляй в строку. Как встретишь LF, строка готова. Затем остаток буфер копируешь в начало (буфера), запоминаешь позицию и в следующий раз из файла читаешь уже на остаток байт меньше ))))))))) |
Сообщ.
#8
,
|
|
|
А зачем тогда дополнительное копирование? Не проще сразу в строку? Все равно ведь фрагменты складывать. А конкатенация явно быстрее вызова функции.
|
Сообщ.
#9
,
|
|
|
Всё может быть и быть всё может. Лишь одного не может быть: того, что точно быть, всё остальное может быть! ))
|