Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.043 c
2-1210064880
дюха
2008-05-06 13:08
2008.06.01
Графика


15-1208288161
ProgRAMmer Dimonych
2008-04-15 23:36
2008.06.01
Книги по поиску и индексации


2-1210532398
Jeqa
2008-05-11 22:59
2008.06.01
ДАТА


2-1209993131
Андрей Пл
2008-05-05 17:12
2008.06.01
Какой модуль подключить что бы воспользоваться ф-й CreateFile?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский