Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

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

 
Nemeziz   (2008-05-12 23:08) [0]

Подскажите, как проверить изменялся ли файл. Задача следующая: имеется форма с компонентом TMemo. В него загружаю текст из некоего текстового файла - Memo.Lines.LoadFromFile(const_def_FilePath). Теперь открываю этот же файл из Блокнота и дописываю в него какой-нибудь текст. Теперь при возвращении в окно своего приложения (Delphi) необходимо проверить изменялся ли файла, и если данное имело место быть вывести сообщение. ShowMessage("File modified. Reload file ?").


 
palva ©   (2008-05-12 23:13) [1]

Сохранять и сравнивать дату последнего изменения файла API-функцией. Может быть, и в Delphi есть такая функция.


 
Anatoly Podgoretsky ©   (2008-05-12 23:29) [2]

> palva  (12.05.2008 23:13:01)  [1]

Не надо ничего подобного сравнивать, а сравнивать стоит CRC


 
{RASkov} ©   (2008-05-12 23:48) [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)

Чем плох данный способ? :)


 
Nemeziz   (2008-05-12 23:56) [4]

Большое спасибо


 
Германн ©   (2008-05-13 00:37) [5]


> Nemeziz   (12.05.08 23:08)
>
> Подскажите, как проверить изменялся ли файл. Задача следующая:
>  имеется форма с компонентом TMemo. В него загружаю текст
> из некоего текстового файла - Memo.Lines.LoadFromFile(const_def_FilePath).
>  Теперь открываю этот же файл из Блокнота и дописываю в
> него какой-нибудь текст. Теперь при возвращении в окно своего
> приложения (Delphi) необходимо проверить изменялся ли файла,
>  и если данное имело место быть вывести сообщение. ShowMessage("File
> modified. Reload file ?").
>

А есть ли смысл в этой задаче? Тот же вышеназванный блокнот совершенно не следит за тем, изменялся ли кем-то ещё тот файл, который в нём открыт. Зачем это нужно твоей программе я не понял.



Страницы: 1 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1208648573
TIF
2008-04-20 03:42
2008.06.01
Переустановить IE7 в Vista. КАК?


2-1209831018
vvs200
2008-05-03 20:10
2008.06.01
Редактирование текста в DBEdit


2-1210456243
DEATH_666
2008-05-11 01:50
2008.06.01
Помогите с курсорами расширения CUR???


15-1208759108
Vudu
2008-04-21 10:25
2008.06.01
Проблема с двухядерниками


15-1208335827
brother
2008-04-16 12:50
2008.06.01
Пэйджеры