![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#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
|
|||
|
|||
|
Это годится только лишь для текстовых файлов.
для всех остальных типов мы получим Болт. |
|
#6
|
||||
|
||||
|
Цитата:
Цитата:
|