Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск даты и слова в txt


Garacio ©   (2007-01-30 20:12:00) 

Отчёт о работе «чужой» программы сохраняется в файле LOG.txt в виде:
------------------------
01.01.07 10:00
Ошибка №ХХХ
Примечание-1
Примечание-2

02.01.07 14:10
Ошибка №ХХХ
Примечание-1
Примечание-2
Примечание-3

02.01.07 16:30
Предупреждение
Примечание

…
-----------------------
Как организовать вывод (в своей программе) в поле Memo информации об сегодняшних ошибках (предупреждение игнорировать)?


Palladin   (2007-01-31 16:12:00) [1]


> Efir   (31.01.07 16:06) [6]

если значение равнонулю, тогда не найдено


Джо   (2007-01-31 16:06:00) [2]

> 1. Как проверять строку на наличие слова "Ошибка", если
> оно не единственное в этой строке?

Pos


> 2. Как добавить проверку сообщения на соответствие сегодняшней
> дате? (или как вариант очищать при закрытии программы файл
> txt)?

Разобрать строку при помощи Pos. Для конвертирования даты из строки — [Try]StrToDateTime, а лучше — ручной разбор и EncodeDateTime.


> 3. И как отслеживать изменения во время работы программы,
> если работать в разных ОС?

FindFirstChangeNotification работает во всех версиях Windows, начиная с Windows 95.
Кроме того, можно просто периодически проверять время последнего доступа к файлу.


Efir   (2007-01-31 16:06:00) [3]

Pos(строка). Результат функции - первое вхождение слова в строке, если значение <0 , значит слово не найдено.


Garacio   (2007-01-31 16:00:00) [4]

Подсказали FindFirstChangeNotification - но я прочитал, что это не работает в версиях Windows9x!
У меня появилась идея, может Вы поможете реализовать её?

При запуске программы:
AssignFile(txt, Dir+'\LOG.txt');
Reset(txt);
while not EOf(txt) do
 begin
 Readln(txt, Stroka);
 If Stroka = 'Ошибка'
   then begin
   While Stroka <>'' do
     MemoInfo.Text := Stroka;
   end;
 end;
CloseFile(txt);


Должно получиться примерно так, но:
1. Как проверять строку на наличие слова "Ошибка", если оно не единственное в этой строке?
2. Как добавить проверку сообщения на соответствие сегодняшней дате? (или как вариант очищать при закрытии программы файл txt)?
3. И как отслеживать изменения во время работы программы, если работать в разных ОС?


Джо   (2007-01-30 20:32:00) [5]

Если файл относительно невелик, то можно воспользоваться классом TStringList.
1. Загрузка файла: List.LoadFromFile
2. Доступ к строкам по номеру: List[N], кол-во строк: List.Count.


Garacio   (2007-01-30 20:25:00) [6]

Во-первых, скажу честно, не нашёл понятного (для новичка) примера поиска слова в txt-файле.
Во-вторых, мы, допустим, нашли слово 'Ошибка', необходимо отобразить примечание (но мы не знаем - сколько строчек будет занимать примечание, известно только, что сообщения разделены пустой строкой)?


Джо   (2007-01-30 20:18:00) [7]

А в чем конкретная трудность?


Наверх

Титульная страница Поиск, карта сайта Написать письмо