Главная страница
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.019 c
2-1209993131
Андрей Пл
2008-05-05 17:12
2008.06.01
Какой модуль подключить что бы воспользоваться ф-й CreateFile?


3-1198824417
ivanovv
2007-12-28 09:46
2008.06.01
Как работать с файлом *.mdb, где названия полей в кириллице


2-1210510760
Системная служба
2008-05-11 16:59
2008.06.01
Запуск как системная служба


2-1210155494
Первокласник Вася
2008-05-07 14:18
2008.06.01
таймер


3-1198498114
Wlad
2007-12-24 15:08
2008.06.01
Связка BDEDatasource и IBDataset