![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить изменялся ли файл
Nemeziz © (2008-05-12 23:08:00)Подскажите, как проверить изменялся ли файл. Задача следующая: имеется форма с компонентом TMemo. В него загружаю текст из некоего текстового файла - Memo.Lines.LoadFromFile(const_def_FilePath). Теперь открываю этот же файл из Блокнота и дописываю в него какой-нибудь текст. Теперь при возвращении в окно своего приложения (Delphi) необходимо проверить изменялся ли файла, и если данное имело место быть вывести сообщение. ShowMessage('File modified. Reload file ?').
Германн (2008-05-13 00:37:00) [1]
> Nemeziz (12.05.08 23:08)
>
> Подскажите, как проверить изменялся ли файл. Задача следующая:
> имеется форма с компонентом TMemo. В него загружаю текст
> из некоего текстового файла - Memo.Lines.LoadFromFile(const_def_FilePath).
> Теперь открываю этот же файл из Блокнота и дописываю в
> него какой-нибудь текст. Теперь при возвращении в окно своего
> приложения (Delphi) необходимо проверить изменялся ли файла,
> и если данное имело место быть вывести сообщение. ShowMessage('File
> modified. Reload file ?').
>
А есть ли смысл в этой задаче? Тот же вышеназванный блокнот совершенно не следит за тем, изменялся ли кем-то ещё тот файл, который в нём открыт. Зачем это нужно твоей программе я не понял.
Nemeziz (2008-05-12 23:56:00) [2]Большое спасибо
{RASkov} (2008-05-12 23:48:00) [3]С отслеживанием изменения даты можно примерно так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
procedure LoadFile(const FirstLoad: Boolean=False);
procedure AppActivate(Sender: TObject);
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LoadFile(const FirstLoad: Boolean=False);
const FL_NM ='name.txt';
var Dt: Integer;
begin
Dt:=FileAge(FL_NM);
if Dt<0 then Memo1.Text:='Не найден файл: '+FL_NM else
if Memo1.Tag<>Dt then begin
if FirstLoad or (MessageDlg('Файл изменился. Перезагрузить?', mtConfirmation, [mbYes, mbNo], 0)=mrYes) then
try
Memo1.Lines.LoadFromFile(FL_NM);
except
Memo1.Text:='Ошибка при загрузке файла: '+FL_NM;
end;
Memo1.Tag:=Dt;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadFile(True);
Application.OnActivate:=AppActivate;
end;
procedure TForm1.AppActivate(Sender: TObject);
begin
LoadFile;
end;
end.
> [2] Anatoly Podgoretsky © (12.05.08 23:29)
Чем плох данный способ? :)
Anatoly Podgoretsky (2008-05-12 23:29:00) [4]> palva (12.05.2008 23:13:01) [1]
Не надо ничего подобного сравнивать, а сравнивать стоит CRC
palva (2008-05-12 23:13:00) [5]Сохранять и сравнивать дату последнего изменения файла API-функцией. Может быть, и в Delphi есть такая функция.