Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2009, 16:13
igrok1251 igrok1251 вне форума
Прохожий
 
Регистрация: 03.11.2009
Сообщения: 1
Репутация: 10
Вопрос Вопрос по чтению данных из файла

Короче такой вопрос:
Есть текстовой файл с блоками данных разделённые несколькими символами перевода строки. Ну типо:

-начало----------------------------
строка
строка
строка


строка
строка
строка

строка
строка
строка
-конец----------------------------

надо написать функцию которая при каждом вызове возражает следующий блок из файла (в виде строки) и так до конца файла.
как написать такую функцию???
Ответить с цитированием
  #2  
Старый 17.11.2009, 14:12
Boris the Blade Boris the Blade вне форума
Прохожий
 
Регистрация: 17.09.2009
Сообщения: 27
Репутация: 10
По умолчанию

Я бы так делал:

1. Загрузить файл в stringlist.
2. Чтобы текст поблоково шел - можно ввести позицию в stringlist'е с которой начинать строки смотреть.
3. Далее идти по этому stringlist'у с нужной позиции (см. пункта 2) и смотрел его строки - запомнить строку, обозначающую начало и конец блока и скопировать все строки между ними, скажем, в memo.
4. Далее изменить позицию начала простмотра (чтоб новый блок текста смотреть).

P.S. Чтобы всё работало без сбоев неплохо ещё сделать проверку на то чтоб кол-во начал и концов совпадало и чтоб блоки не пересекались (это только для того чтоб при кривом файле прога не глючила).
Ответить с цитированием
  #3  
Старый 01.12.2009, 19:47
OnzMill OnzMill вне форума
Прохожий
 
Регистрация: 06.10.2009
Сообщения: 48
Репутация: 10
По умолчанию

пробуй эту функцию.

BlockRead(FromF, Buf, SizeOf(A), NumRead1);
считыват с открытого файла в буфер количество байтов (SizeOf) с открытого файла (FromF[i]) и возращает реально считанное число блоков (NumRead1).

Buf: array[1..512] of Char;
FromF: file;
NumRead1: Integer;
__________________
Говори что думаешь, думай, что говоришь.
(Шоссе 60)
Ответить с цитированием
  #4  
Старый 01.12.2009, 20:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

И нафига 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  
Старый 02.12.2009, 19:33
OnzMill OnzMill вне форума
Прохожий
 
Регистрация: 06.10.2009
Сообщения: 48
Репутация: 10
По умолчанию

Это годится только лишь для текстовых файлов.
для всех остальных типов мы получим Болт.
__________________
Говори что думаешь, думай, что говоришь.
(Шоссе 60)
Ответить с цитированием
  #6  
Старый 02.12.2009, 20:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от OnzMill
Это годится только лишь для текстовых файлов.
для всех остальных типов мы получим Болт.
Ну дык и вопрос-то звучит:
Цитата:
Есть текстовой файл с блоками данных разделённые несколькими символами перевода строки. Ну типо:
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter