• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта


  • Иллюстрированный самоучитель по Delphi 7 для профессионалов

    Оповещение об изменениях в файловой системе

    Многие программисты задавались вопросом: как получить сигнал от операционной системы о том, что в файловой системе произошли какие-то изменения? Такой вид оповещения позаимствован из ОС UNIX и теперь доступен программистам, работающим с Win32.

    Для организации мониторинга файловой системы нужно использовать три функции – FindFirstChangeNotification, FindNextChangeNotification и FinddoseChangeNotification. Первая из них возвращает дескриптор объекта файлового оповещения, который можно передать в функцию ожидания.

    Объект активизируется тогда, когда в заданной папке произошли те или иные изменения (создание или уничтожение файла или папки, изменение прав доступа и т. д.). Вторая функция – готовит объект к реакции на следующее изменение. Наконец, с помощью третьей функции следует закрыть, ставший ненужным, объект.

    Так может выглядеть код метода Execute потока, созданного для мониторинга:

    var DirName: string;
    …
    procedure TSimpleThread.Execute;
    var r: Cardinal;
    fn: THandle;
    begin
    fn: = FindFirstChangeNotification(pChar(DirName),True, FILE_NOTIFY_CHANGE_FILE_NAME);
    repeat
    r: = WaitForSingleObject(fn,2000);
    if r = WAIT_OBJECT_0 then Forml.UpdateList;
    if not FindNextChangeNotification(fn) then break;
    until Terminated;
    FinddoseChangeNotification (fn);
    end;
    

    На главной форме должны находиться компоненты, нужные для выбора обследуемой папки, а также компонент TListBox, в который будут записываться имена файлов:

    procedure TForml.ButtonlClick(Sender: TObject);
    var dir: string;
    begin
    if SelectDirectory(dir, [],0) then
    begin
    Editl.Text: = dir; DirName: = dir;
    end;
    end;
    procedure TForml.UpdateList; var SearchRec: TSearchRec;
    begin
    ListBoxl.Clear;
    FindFirst(Editl.Text+'\*.*', faAnyFile, SearchRec);
    repeat ListBoxl.Items.Add(SearchRec.Name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
    end;
    

    Приложение готово. Чтобы оно стало полнофункциональным, предусмотрите в нем механизм перезапуска потока при изменении обследуемой папки.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.