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

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

Как проверить изменялся ли файл


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 есть такая функция.


Наверх

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