|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос по чтению данных из файла
Короче такой вопрос:
Есть текстовой файл с блоками данных разделённые несколькими символами перевода строки. Ну типо: -начало---------------------------- строка строка строка строка строка строка строка строка строка -конец---------------------------- надо написать функцию которая при каждом вызове возражает следующий блок из файла (в виде строки) и так до конца файла. как написать такую функцию??? |
#2
|
|||
|
|||
Я бы так делал:
1. Загрузить файл в stringlist. 2. Чтобы текст поблоково шел - можно ввести позицию в stringlist'е с которой начинать строки смотреть. 3. Далее идти по этому stringlist'у с нужной позиции (см. пункта 2) и смотрел его строки - запомнить строку, обозначающую начало и конец блока и скопировать все строки между ними, скажем, в memo. 4. Далее изменить позицию начала простмотра (чтоб новый блок текста смотреть). P.S. Чтобы всё работало без сбоев неплохо ещё сделать проверку на то чтоб кол-во начал и концов совпадало и чтоб блоки не пересекались (это только для того чтоб при кривом файле прога не глючила). |
#3
|
|||
|
|||
пробуй эту функцию.
BlockRead(FromF, Buf, SizeOf(A), NumRead1); считыват с открытого файла в буфер количество байтов (SizeOf) с открытого файла (FromF[i]) и возращает реально считанное число блоков (NumRead1). Buf: array[1..512] of Char; FromF: file; NumRead1: Integer; Говори что думаешь, думай, что говоришь. (Шоссе 60) |
#4
|
||||
|
||||
И нафига StringList?
И нафига BlockRead? Код:
program Project35; {$APPTYPE CONSOLE} Var MyFile: Text; function ReadTexBlock: String; Var S: String; begin Result := ''; repeat ReadLn(MyFile, S); until not Eof(MyFile) and (S <> ''); repeat Result := Result + S; ReadLn(MyFile, S); until not Eof(MyFile) and (S = ''); end; begin AssignFile(MyFile, 'c:\Test.txt'); Reset(MyFile); WriteLn(ReadTexBlock); WriteLn(ReadTexBlock); CloseFile(MyFile); end. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Это годится только лишь для текстовых файлов.
для всех остальных типов мы получим Болт. Говори что думаешь, думай, что говоришь. (Шоссе 60) |
#6
|
||||
|
||||
Цитата:
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |