Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.01.2012, 23:07   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию Чтение данных из txt файла.

Здравствуйте.

У меня есть текстовый файл с разными данными, которые хранятся между
ключевых слов для поиска:

#cor
44:77:590:400
48:17:990:140
cor#


#vid
700:1000:490:80:70:716
200:1080:410:60:20:110
vid#



Подскажите пожалуйста, как обратиться к файлу и получить например
данные между #vid vid# и использовать их как переменные?

Что-то типа этого:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
 S: string;
begin
AssignFile(F, 'Test.txt');
 Reset(F);
Readln(F, S);
ShowMessage(S);
CloseFile(F);
end;
Спасибо за внимание.

Последний раз редактировалось werrey; 03.01.2012 в 02:37.
werrey вне форума
Старый 04.01.2012, 18:48   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для начала, файл большой? тут проще будет его загрузить в память и там уже разобрать и сохранить блоками этими.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 04.01.2012, 19:18   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

У меня была подобная задача.

Вот как смог, выдрал код
Код:
procedure TMainForm.StartParserBtnClick(Sender: TObject);
  // начало
  StartBlockPos = '=+-';
  // конец блока
  EndBlockPos = ':)';

var
  p, j: integer;
  s, sTmp: string;
  Ts, rTs: TStringList;
begin

  Ts := TStringList.Create;
  rTs := TStringList.Create;
  p := 0;
  j := 0;
  try
    Ts.LoadFromFile(OpennedFile);
    s := Ts.Text;
    sTmp := Ts.Text;

    while not(AnsiPos(StartBlockPos, s) = 0) do
    begin
      // Ищем начало нужного блока
      p := AnsiPos(StartBlockPos, s);
      // удаляем всё до найденной позиции
      Delete(s, 1, p);
      // Ищем конец блока
      p := AnsiPos(EndBlockPos, s);
      // копируем блок до позиции конка+длинна конечного блока
      rTs.Text := Copy(s, 1, p + Length(EndBlockPos));
      Delete(s, 1, p + Length(EndBlockPos));

      // результат парсинга
      SaveBlockData(rTs.Text, BlocksNum); //в rTs.Text текущий текст блока
      rTs.Clear;
    end;
  finally
    FreeAndNil(Ts);
    FreeAndNil(rTs);
  end;

end;
Человек_Борща вне форума
Старый 04.01.2012, 21:14   #4
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Всем большое спасибо конечно, а как просто, через Readln(F, S); это сделать?
без StringList? Провернуть весь файл циклом, найти блок, и с ним работать?

Файл будет большой, несколько тысяч строк, каждый блок, это параметры и данные, к которым нужно регулярно обращаться.
werrey вне форума
Старый 04.01.2012, 21:18   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Провернуть весь файл циклом, найти блок, и с ним работать?
только так если.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 04.01.2012, 21:22   #6
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
только так если.
Спасибо, а можно полноценный примерчик, как это сделать, буду очень благодарен, знал бы как сделать грамотно, не спрашивал бы.
werrey вне форума
Старый 04.01.2012, 21:32   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
Файл будет большой, несколько тысяч строк, каждый блок, это параметры и данные, к которым нужно регулярно обращаться.
Напишите спец. класс который и будет хранить блоки данных в памяти.

с ними и общайтесь.

P.S. та часть кода, которая вам нужна(из моего предыдущего поста) не зависит от TStringList объекта.


Может лучше скажете, что за файл? Кто его оздаёт? И зачем он? Тогда сможем подсказать вам оптимальный путь решения проблемы общения с файлом.
Человек_Борща вне форума
Старый 04.01.2012, 21:40   #8
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Пока это обычный текстовый файл, создавать его не нужно(пишется в блокноте, в будущем нужна будет кодировка, но пока до этого рано), к нему обращаются разные процедуры ( каждая для своего блока), и использует данные.
Без примера я ничего не смогу сделать.

Спасибо за внимание.
werrey вне форума
Старый 04.01.2012, 21:54   #9
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Может хранить данные в виде XML?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума
Старый 04.01.2012, 23:43   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от werrey Посмотреть сообщение
Пока это обычный текстовый файл, создавать его не нужно(пишется в блокноте, в будущем нужна будет кодировка, но пока до этого рано), к нему обращаются разные процедуры ( каждая для своего блока), и использует данные.
Без примера я ничего не смогу сделать.

Спасибо за внимание.
Разные процедуры? Что за сыр-бор? Не в каменом веке живём ведь Напишите класс, хранящий эти данные в run-time и нужные методы для использования хранимых данных

1 раз загружайте файл с диска(при запуске программы), со сохраняйте при завершении программы.

А данные храните не в txt, а в XML(как уже сказали выше).
Рекоммендую начать с NativeXML. Там можно и в бинарном виде хранить, и в любой кодировке сохранять. И с форматированием и без него
Человек_Борща вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из файла txt, язык C Sneeze Общие вопросы C/C++ 8 30.12.2011 14:34
чтение и отображение из ".txt" файла в dataGridView Leva_89 C# (си шарп) 0 23.03.2011 23:23
if и чтение+вывод из файла .txt webber9989 PHP 4 24.08.2010 22:13
PL/SQL, построчное чтение txt файла seriousMalish SQL, базы данных 0 09.06.2010 21:31
Чтение из TXT файла soonner Общие вопросы Delphi 1 14.03.2009 13:52