Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Массивы: определить, сколько раз температура опускалась ниже –10 градусов https://www.cyberforum.ru/ delphi-beginners/ thread1219861.html
Данные о температуре воздуха за декаду ноября хранятся в массиве. Определить, сколько раз температура опускалась ниже –10 градусов.
Txt в stringrid. Вывод таблицы рекордов Delphi
Добрый день, форумчане. Суть проблемы: результаты (имя и время) сохраняются в txt файл. Этот файл выводится в стрингрид. Возможно ли как-то сделать сортировку содержимого из файла txt по времени, чтобы выводились в стрингрид только 10 записей из txt файла, от наименьшего к наибольшему, т.е. сделать таблицу рекордов. Кол-во записей в txt файле не ограниченно и пополняются. Пример: 1. Петров :...
Delphi Столбцы левой половины матрицы поменять местами со столбцами правой половины матрицы https://www.cyberforum.ru/ delphi-beginners/ thread1219711.html
Дан двумерный массив из чётного числа столбцов. Столбцы левой половины массива поменять местами со столбцами правой половины.
Delphi Найти суммарную длину строк файла, в записи которых столько же цифр, сколько и в последней строке текста Написать функцию, которая по данным текстового файла f находит суммарную длину строк, в записи которых столько же цифр, сколько и в последней строке текста. https://www.cyberforum.ru/ delphi-beginners/ thread1219618.html
Delphi Определить, есть ли хотя бы 1 элемент, равный заданному числу на главной диагонали квадратного массива
Составить программу, которая определяет, есть ли хотя бы один элемент, равный заданному числу на главной диагонали квадратного массива. В случае положительного ответа должны быть напечатаны координаты любого из них.
Delphi Как вырезать ответ от vk (токен)? https://www.cyberforum.ru/ delphi-beginners/ thread1219537.html
Приветствую всех. Как вырезать значение , где написано слово здесь. То есть нужно получить что в кавычках. {"access_token":"Здесь","expires_in":0,"user_id":}
Delphi Хранение данных в exe-файле https://www.cyberforum.ru/ delphi-beginners/ thread1219511.html
Здравствуйте! Имеется необходимость для защиты программы получать ну например номер жесткого диска ( это все в целях нераспространения моей идеи, поэтому просто например ) и записывать этот номер в сам .ехе либо ресурсы я не знаю. И далее сверять его с чем либо , и производить дальнейшие действия. Задача в том, чтобы хранить этот номер в самом .ехе после первого запуска, до конца жизни и без...
Определить угол наклона букв Delphi
Имеется слово, координаты которого записаны в файле с координатами x,y, d ( давление пера). Помогите определить наклон букв.
Delphi Постройте массив S, каждый элемент которого равен сумме соответствующих элементов массивов A и B https://www.cyberforum.ru/ delphi-beginners/ thread1219473.html
Даны динамические массивы A и B, состоящие из n элементов. Постройте массив S, каждый элемент которого равен сумме соответствующих элементов массивов A и B.
Delphi Написать программу, в которой с помощью массива вывести максимальный элемент каждого столбца https://www.cyberforum.ru/ delphi-beginners/ thread1219455.html
Написать программу, в которой с помощью массива вывести максимальный элемент каждого столбца. Помогите решить пожалуйста!
Delphi Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X
Суммы элементов матриц X(m,n) и Y(p,q), имеющих значения в интервале Min…Max. Для матрицы. 2.Суммы элементов каждой строки матрицы X(m,n), имеющих значения в интервале Min…Max.Для строки. 3.Вывести на печать элементы матрицы 2<= А(i,j) <=5 4.Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X.Условие N ≤ 40.
Delphi Объединить два кода https://www.cyberforum.ru/ delphi-beginners/ thread1219415.html
Помогите, пожалуйста этот код var y:array of Integer; r:array of Integer=(0,0,0,0,0,0,0,0,0,0); N,i,j:Integer; begin for i:=0 to 9 do begin Write('Vvedi znachenie y bud murzikom: '); Readln(y);
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
02.07.2014, 13:56 0

Мониторинг изменений текстового файла - Delphi - Ответ 6388315

02.07.2014, 13:56. Показов 3145. Ответов 5
Метки (Все метки)

Лучший ответ Сообщение было отмечено vovak_85 как решение

Решение

Цитата Сообщение от vovak_85 Посмотреть сообщение
Помогите с кодом, необходимо проверять на изменение теста файл(txt) с интервалом 1 сек на заданном периоде времени.
Самый простой способ - проверять время последнего изменения файла через вызов FileAge(). Данные о времени будут получены не зависимо от режима, в котором открыт файл. Если текущее время изменения отличается от предыдущего запомненного значения, значит - файл изменён.
Пример:
На форму надо положить:
Button1: TButton; //Кнопка: "Запуск монитора".
Button2: TButton; //Кнопка: "Останов монитора".
Timer1: TTimer; //Таймер. Вначале он должен быть выключен: Timer1.Enabled := False.
Memo1: TMemo; //Журнал в который будут выводиться сообщения монитора.
Для кнопок Button1 и Button2 создать обработчики OnClick, для таймера Timer1 создать обработчик события OnTimer. Код оформить таким образом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    FFileName : String;    //Имя файла, за которым ведётся наблюдение.
    FTimeLast : TDateTime; //Дата и время последнего изменения файла.
    procedure MonStart(const aFileName : String); //Запуск монитора.
    procedure MonStop; //Останов монитора.
    procedure MonScan; //Проверка - изменился ли файл.
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
//Останов монитора.
procedure TForm1.MonStop;
begin
  Timer1.Enabled := False;
  Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', Now) + '. Монитор остановлен.')
end;
 
//Запуск монитора.
procedure TForm1.MonStart(const aFileName : String);
begin
  //Если монитор работает, то останавливаем его.
  if Timer1.Enabled then
     MonStop;
  //Проверяем, существует ли файл.
  if not FileExists(aFileName) then
  begin
    Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', Now)
      + '. Файл не найден! Действие отменено.');
    Exit;
  end;
 
  //Запускаем монитор.
  FFileName := aFileName;
  FTimeLast := FileDateToDateTime(FileAge(FFileName));
  Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', Now) + '. Монитор запущен.');
  Memo1.Lines.Add('Файл: ' + FFileName);
  Memo1.Lines.Add('Время последнего изменения файла: '
    + FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', FTimeLast));
  Timer1.Enabled := True;
end;
 
//Проверка - изменён ли файл.
procedure TForm1.MonScan;
var
  TimeCur : TDateTime;
begin
  //Проверяем, существует ли файл.
  if not FileExists(FFileName) then
  begin
    Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', Now) + '. Файл не найден!');
    MonStop;
  end;
  //Текущее временя последнего изменения файла.
  TimeCur := FileDateToDateTime(FileAge(FFileName));
  //Если текущее время изменения отличается от предыдущего, значит файл изменён.
  if FTimeLast <> TimeCur then
  begin
    FTimeLast := TimeCur;
    Memo1.Lines.Add(FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', Now) + '. Файл изменён.');
    Memo1.Lines.Add('    Время последнего изменения файла: '
      + FormatDateTime('dd.mm.yyyy"-"hh:nn:ss:zzz', FTimeLast));
  end;
end;
 
//Таймер: отслеживаение изменений файла.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  MonScan;
end;
 
//Кнопка: запуск монитора.
procedure TForm1.Button1Click(Sender: TObject);
begin
  MonStart(ExtractFilePath(ParamStr(0)) + 'file.txt');
end;
 
//Кнопка: останов монитора.
procedure TForm1.Button2Click(Sender: TObject);
begin
  MonStop;
end;
 
//Перед закрытием формы.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  MonStop;
end;
 
end.
Что касается реализации с ReadDirectoryChangesW() - она будет существенно сложнее. Если делать всё, как положено, с отдельным потоком и с синхронизацией, то можно отталкиваться от следующего примера:
ReadDirectoryChangesW(). Отслеживание изменений в папках.
Для данного случая код можно упростить, отказаться от дополнительного потока и перейти на вызов ReadDirectoryChangesW() в синхронном режиме. Но всё равно код будет существенно сложнее, чем вариант с FileAge().

Вернуться к обсуждению:
Мониторинг изменений текстового файла Delphi
4
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2014, 13:56
Готовые ответы и решения:

Импорт данных из текстового файла с постоянным отслеживанием изменений
Здравствуйте. Прошу помочь в следующем вопросе. Необходимо импортировать данные из TXT-файла с...

Внесение изменений в текстовый файл согласно информации, получаемой из другого текстового файла
Добрый день, снова обращаюсь за помощью! К теме прикрепляю 3 файла: Коды_районы.txt Названия...

Мониторинг изменений в бд
Не знаю как правильно сформулировать вопрос. В вк допустим чат ведётся, человек написал, и...

Мониторинг изменений файловой системе
Помогите составить алгоритм или постановку следующей задачи(мониторинг изменений во всей файловой...

5
02.07.2014, 13:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 13:56
Помогаю со студенческими работами здесь

Мониторинг изменений в базах данных
Уважаемые форумчане, здравствуйте! Нужен ваш совет. Алгоритм определения изменений схемы...

Мониторинг изменений файлов каталога
Доброго времени суток коллеги. :) Подскажите, есть у кого может исходники подобной программы...

Триггер на мониторинг изменений в таблице
Добрый день! Накидал такой код: USE GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO...

Мониторинг процессов. Как сделать запись изменений в одну строчку
Всем привет! Есть вот такая таблица. USE GO /****** Object: Table . Script Date:...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru