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

Вниз

все хорошо НО.............   Найти похожие ветки 

 
nika_ufc   (2002-11-24 17:34) [0]

все хорошо но прошрамма почему то не работает. она должна сигнализзыровать при следуюших изменениях:
1.Сигнализировать о создании, удалении и переименовании файла.
2.Сигнализировать о создании, удалении, переименовании подкаталогов
3.Сигнализировать об изменении атрибутов файлов или подкаталогов
4.Сигнализировать об изменении размеров файлов. Операционная система определяет, что размер файла изменился, только если он закрыт
5.Сигнализировать о смене даты последнего изменения файла. Операционная система определяет, что дата изменения файла сменилась, только если он закрыт
6.Сигнализировать об изменениях дескриптора защиты.
программа компилируется но там следуюшие Warnings:
[Warning] uMonThread.pas(130): Symbol "Win32Check" is specific to a platform
[Warning] uMonThread.pas(131): Symbol "Win32Check" is specific to a platform
[Warning] uMonThread.pas(132): Symbol "Win32Check" is specific to a platform
[Warning] uMonThread.pas(133): Symbol "Win32Check" is specific to a platform
[Warning] uMonThread.pas(134): Symbol "Win32Check" is specific to a platform
[Warning] uMonThread.pas(135): Symbol "Win32Check" is specific to a platform
там я использую поток TMonDirThread и
TForm=TfMonDirMain
TStatusBar=sbMain
TTimer=tmDate

а вот и код программы(обе Unit-а здесь) :
Unit1=ufMain

unit ufMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, Menus, uMonThread;

type
TfMonDirMain = class(TForm)
mm: TMainMenu;
lbLog: TListBox;
sbMain: TStatusBar;
tmDate: TTimer;
Monitor1: TMenuItem;
mmExit: TMenuItem;
mmStart: TMenuItem;
mmStop: TMenuItem;
procedure tmDateTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure mmExitClick(Sender: TObject);
procedure mmStartClick(Sender: TObject);
procedure mmStopClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fMonDirMain: TfMonDirMain;

implementation

{$R *.dfm}


procedure TfMonDirMain.tmDateTimer(Sender: TObject);
begin
sbMain.Panels[0].Text:=FormatDateTime("dd.mm.yyyy hh:nn:ss",Now)
end;

procedure TfMonDirMain.FormCreate(Sender: TObject);
begin
tmDateTimer(Self);
sbMain.Panels[1].Text:="Disconnected";
Application.Title:="Directory monitor"
end;


procedure TfMonDirMain.mmExitClick(Sender: TObject);
begin
Close
end;


procedure TfMonDirMain.mmStartClick(Sender: TObject);
begin
fMonDirMain.Tag:=Integer(TMonDirThread.Create("c:\"));
mmStart.Enabled:=False;
mmStop.Enabled:=True;
end;

procedure TfMonDirMain.mmStopClick(Sender: TObject);
begin
if Assigned(TMonDirThread(fMonDirMain.Tag)) then
TMonDirThread(fMonDirMain.Tag).Terminate;
fMonDirMain.Tag:=0
end;

end.

из зя таго что второй Unit здесь не поместилься я приважу его в следуюшем вопросе


 
nika_ufc   (2002-11-24 17:37) [1]

Unit2=uMOnDiurThread

unit uMonThread;

interface

uses
Classes, Windows, SysUtils;

type
TMonDirThread = class(TThread)
public
constructor Create(aPath: String);
private
FPath:String;
{ Private declarations }
protected
Procedure Execute; override;
Procedure UpdateLog_Change_File_Name;
Procedure UpdateLog_Change_Dir_Name;
Procedure UpdateLog_Change_Attributes;
Procedure UpdateLog_Change_Size;
Procedure UpdateLog_Change_Last_Write;
Procedure UpdateLog_Change_Security;
Procedure ThreadStart;
Procedure ThreadStop;
end;

implementation
uses ufMain;
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure TMonDirThread.UpdateCaption;
begin
Form1.Caption := "Updated in a thread";
end; }

{ TMonDirThread }

Constructor TMonDirThread.Create(aPath: String);
begin
inherited Create(True);
FreeOnTerminate:=True;
FPath:=aPath;
Self.Priority:=tpHighest;
Resume
end;

Procedure TMonDirThread.UpdateLog_Change_File_Name;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Change the file name");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

Procedure TMonDirThread.UpdateLog_Change_Dir_Name;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Change the dir name");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

Procedure TMonDirThread.UpdateLog_Change_Attributes;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Change the file attributes");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

Procedure TMonDirThread.UpdateLog_Change_Size;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Change the file size");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

Procedure TMonDirThread.UpdateLog_Change_Last_Write;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Change the file modified date");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

Procedure TMonDirThread.UpdateLog_Change_Security;
begin
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Changed the file security");
if fMonDirMain.lbLog.Items.Count>200 then
fMonDirMain.lbLog.Items.Delete(0);
fMonDirMain.lbLog.ItemIndex:=fMonDirMain.lbLog.Items.Count-1
end;

procedure TMonDirThread.ThreadStart;
begin
fMonDirMain.sbMain.Panels[1].Text:="Active";
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Monitor is started")
end;

procedure TMonDirThread.ThreadStop;
begin
fMonDirMain.sbMain.Panels[1].Text:="Disconnected";
fMonDirMain.lbLog.Items.Add(TimeToStr(Time)+" Monitor is stoped");
fMonDirMain.mmStart.Enabled:=True;
fMonDirMain.mmStop.Enabled:=False
end;


снова не поместилься, полавина в следуюшем


 
nika_ufc   (2002-11-24 17:39) [2]

продалжение:

procedure TMonDirThread.Execute;
var
HandleChange_Change_File_Name,
HandleChange_Change_Dir_Name,
HandleChange_Change_Attributes,
HandleChange_Change_Size,
HandleChange_Change_Last_Write,
HandleChange_Change_Security:THandle;
begin
{ Place thread code here }
HandleChange_Change_File_Name:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_FILE_NAME);
HandleChange_Change_Dir_Name:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_DIR_NAME);
HandleChange_Change_Attributes:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_ATTRIBUTES);
HandleChange_Change_Size:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_SIZE);
HandleChange_Change_Last_Write:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_LAST_WRITE);
HandleChange_Change_Security:=FindFirstChangeNotification(PChar(FPath),True,FILE_NOTIFY_CHANGE_SECURITY);
Win32Check(HandleChange_Change_File_Name<>INVALID_HANDLE_VALUE);
Win32Check(HandleChange_Change_Dir_Name<>INVALID_HANDLE_VALUE);
Win32Check(HandleChange_Change_Attributes<>INVALID_HANDLE_VALUE);
Win32Check(HandleChange_Change_Size<>INVALID_HANDLE_VALUE);
Win32Check(HandleChange_Change_Last_Write<>INVALID_HANDLE_VALUE);
Win32Check(HandleChange_Change_Security<>INVALID_HANDLE_VALUE);
Synchronize(ThreadStart);
try
while not Terminated do
begin
case WaitForSingleObject(HandleChange_Change_File_Name,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_File_Name);
end;
case WaitForSingleObject(HandleChange_Change_Dir_Name,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_Dir_Name)
end;
case WaitForSingleObject(HandleChange_Change_Attributes,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_Attributes)
end;
case WaitForSingleObject(HandleChange_Change_Size,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_Size)
end;
case WaitForSingleObject(HandleChange_Change_Last_Write,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_Last_Write)
end;
case WaitForSingleObject(HandleChange_Change_Security,1000) of
WAIT_FAILED:Terminate;
WAIT_OBJECT_0:Synchronize(UpdateLog_Change_Security)
end;
FindNextChangeNotification(HandleChange_Change_File_Name);
FindNextChangeNotification(HandleChange_Change_Dir_Name);
FindNextChangeNotification(HandleChange_Change_Attributes);
FindNextChangeNotification(HandleChange_Change_Size);
FindNextChangeNotification(HandleChange_Change_Last_Write);
FindNextChangeNotification(HandleChange_Change_Security)
end;
finally FindCloseChangeNotification(HandleChange_Change_File_Name);
FindCloseChangeNotification(HandleChange_Change_Dir_Name);
FindCloseChangeNotification(HandleChange_Change_Attributes);
FindCloseChangeNotification(HandleChange_Change_Size);
FindCloseChangeNotification(HandleChange_Change_Last_Write);
FindCloseChangeNotification(HandleChange_Change_Security)
end;
Synchronize(ThreadStop);
end;

end.



 
Shadow   (2002-11-24 17:41) [3]

А теперь еще раз, и по-русски


 
nika_ufc   (2002-11-24 17:52) [4]

>Shadow ©
Я на работе, очень спешу и пожалуйста ответитье меня без насмешок, не било времени писать по-русски


 
Anatoly Podgoretsky   (2002-11-24 17:56) [5]

Подумай может у тебя еще какие модули остались, которые ты привел.



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

Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
4-14865
Бульбаш
2002-10-24 13:25
2002.12.05
Хочу освоить работу с WinAPI, столкнулся сразу с проблемой


4-14873
M@xim
2002-10-25 10:10
2002.12.05
Диалог OpenFolder или чтото подобное


14-14784
Undert
2002-11-06 00:04
2002.12.05
Встреча МАСТАКОВ в Питере !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


3-14459
berezne
2002-11-18 17:33
2002.12.05
Индексация БД


3-14465
Asderg
2002-11-19 09:23
2002.12.05
как засунуть данные в блоб-поле запросом?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский