Из достоверных источников стало известно, что в Embarcadero готовиться к выходу Update 4 для Delphi XE2. Судя по описанию, нас снова ждёт пополнение коллекции VCL-стилей и много-много всего по Firemonkey. А раз так, то следующую статью про Firemonkey я решил отложить до выхода апдейта, чтобы не дай бог написать про уже исправленные недочеты (и тем самым ввести Вас в заблуждение) и вместо нового повествования про FMX немного поиграть на баяне рассказать о вещах, про которые информации в Сети много, но тем не менее вопросы всё ещё есть и, видимо долго ещё будут - про интерфейс Drag&Drop и как использовать, на первый взгляд, непонятные интерфейсы типа IDropTarget, IDropObject и т.д. Сподвигли меня на такой шаг два обстоятельства: необходимость и желание самому разобраться, что и как работает в ShellAPI по части реализации Drag&Drop. До этого момента мне как-то не приходилось иметь серьезных дел по части Drag&Drop...ну разве, что иногда реализовывал перетаскивание чего-то куда-то внутри программы. А тут потребовалось сделать так, чтобы приложение могло "ловить" файлы, определять формат, вытягивать из файлов необходимые данные, отсеивать ненужные объекты и т.д. В общем полез я на MSDN, форумы, агрегаторы статей и т.д. и начал, что называется, вникать в вопрос по полной программе. Ну, а кое-какие выдержки из того, что удалось добыть Вы можете прочитать в этой статье.
Наши проекты
Delphi+Google
Chrono
ODFProc
Поддержка блога
А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.
Публикации
Год назад
Случайный пост
Последние
Сообщения форума
Комментарии
Опрос
В последнее время задачи и цели накапливаются со страшной скоростью и постоянно приходится держать эти задачи под рукой, корректировать их, расставлять приоритеты и т.д. Для того, чтобы лишний раз не загружать свою оперативную память кучей информации и заодно всегда держать под рукой задачи года два назад я писал программку под названием "Хронометр".
Времени прошло более, чем достаточно для обновления. За эти два года много чего изменилось и произошло, например, я успел воспользоваться очень большим количеством онлайн-сервисов для ведения списка задач - от общеизвестных и простых, таких как Google Tasks до "навороченных" типа Мегаплана, todo.ly и пр. Google Tasks понравился за его простоту, Мегаплан - по отдельным фичам, но в целом на платную версию переходить не решился - для меня одного столько фич просто не требуется, другие не прижились в качестве повседневно используемых по разным причинам, в основном, по удобству использования. В целом для себя я определил следующие функции, которые должны быть в планировщике:
В предыдущем посте мы остановились на том. что разработали небольшое приложение, которое проводило мониторинг изменений в определенной директории и, в случае обнаружения какого-либо изменения, "сигналило" нам. Для организации мониторинга мы использовали поток (TThread) в котором использовалось три взаимосвязанные функции Windows: FindFirstChangeNotification, FindNextChangeNotification и FindCloseChangeNotification.
Как говорилось ранее, с помощь этих функций нельзя узнать какую-либо специфическую информацию об изменениях. Так, например, при срабатывании события мы не могли узнать изменилось ли имя файла или был добавлен новый файл. Или, если произошла смена имени файла, то мы не можем узнать какое имя было до смены и какое стало после. Все эти нюансы могут натолкнуть неподготовленного разработчика на мысль, что использование приведенных выше функций ограничено - задача мониторинга изменений в директории обычно преследует не абстрактную цель - узнать что что-то поменялось (хотя, иногда и такой информации бывает достаточно), а получить конкретный ответ на вопрос - что изменилось и как (сменилось имя, размер, права доступа и т.д.? Прежде, чем мы перейдем к работе с такой специфической информацией об изменениях, мы немного доработаем наш предыдущий пример и посмотрим как с помощью уже известных нам трех функций можно настроить мониторинг так, чтобы получать максимально конкретизированную (на сколько это возможно) информацию по изменениям.
При разработке приложений Delphi для синхронизации чего-либо, например, файлов на разных компьютерах, так или иначе приходится разрабатывать алгоритм с помощью которого можно однозначно определять какие из файлов необходимо удалить из определенной директории, какие переместить, переименовать и т.д. Подобные алгоритмы и примеры их использования на практике не являются редкостью - в Сети Вы можете найти массу самых различных вариаций Delphi-кода с помощью которого можно отследить изменения в директориях и файлах Windows.
Не так давно и мне довелось столкнуться с подобной задачей - отследить изменения в определенной директории и сформировать список заданий для синхронизации файлов с сервером. Так как до этого момента мне не доводилось разрабатывать подобные алгоритмы, то пришлось пошерстить просторы Интернета и собрать как можно больше информации на заданную тему. Ну, а результаты моих поисков я решил оформить в виде отдельной статьи в блоге. Итак, сегодняшняя тема - мониторинг изменений в директориях и файлам средствами Delphi. Читать далее »
Итак, наконец-то можно представить пользователям “Пинговалки” новую версию программы 1.0. На протяжении пяти дней я знакомил Вас с новыми возможностями работы программы для отправки пингов в сервисы для ускорения индексации блога. Не могу сказать, что абсолютно всё, что я хотел сделать было в итоге реализовано в программе. Отчасти на работу над программой повлиял дурацкий график работы в офф-лайне – иногда просто не было желания что-либо писать, отчасти – небольшие проблемы в реализации методов. Но, тем не менее, большинство функций работают и настало время, когда новая версия программы должна “выйти в свет”. В свободное время я, конечно, буду программу дорабатывать, улучшать, вносить кое-какие изменения, но основа останется неизменной.
Приступим к рассмотрению всех функций новой версии программы.
Пятый и, видимо, заключительный пост о разработке новой версии “Пинговалки”. Те, кто следит за постами, касающимися этой программы и ждет выхода новой версии, думаю, заметили, что несколько дней я про программу не говорил ни слова. Да, были кое-какие проблемы в оффлайне, поэтому программой практически не занимался. Однако сегодня, после прогулки выдалось по-настоящему свободное время и я решил дописать “Пинговалку”. Следующий пост будет касаться работы с новой версией, а пока, подведу кое-какие итоги разработки.
Вчера по причине проблем у провайдера пришлось отложить проработку кое-каких сетевых фич “Пинговалки” и сосредоточиться на разработке интерфейса, перестановке кое-каких команд на ленте Ribbon и т.д. В общем обычная рутинная работа.
Но зато была возможность проработать часть программы, которая отвечает за сохранение/загрузку файлов заданий для пинга. Итак, что было сделано на четвертый день работы над новой версией “Пинговалки”
День 3 разработки новой “Пинговалки” подходит к концу. Сегодня все внимание было уделено организации главного процесса ради которого и пишется программа – многопоточного пинга. Не всё пока удалось реализовать на том уровне, на котором хотелось бы, но тем не менее, кое-какие положительные подвижки в этом направлении есть.
Итак, что ждет пользователей новой “Пинговалки” при пинге страниц.
Сегодня, как ни странно, но на работу с “Пинговалкой” времени на много меньше, чем вчера и позавчера. Соответственно и сделано по-меньше, но, тем не менее, хоть что-то. Как говориться “Ни дня без строчки кода!” :)
Вчера день был полностью занят работе с XML, а точнее, переход к концепции Ribbon UI – по возможности сделать выполнение задачи в один клик по команде в ленте. С Sitemap в этом плане проблем не возникло – файлы по объему небольшие. работа выполняется быстро даже на самых “дряхлых” компьютерах. Сегодня работа крутилась вокруг парсинга информации со страниц сайта.
В принципе, я думаю, что основная часть посетителей моего блога уже знакома с моей программкой под названием “Пинговалка”. Это небольшая программа, написанная в Lazarus, предназначена для отправки коротких сообщений (пингов) в специальные сервисы, которые помогают индексировать Ваш сайт быстрее. Напримр, у Яндекса есть такой пинг-сервис для того, чтобы оперативно индексировать блоги. Дополнительно пинг помогает, в случае необходимости, доказать, что именно Вы автор статьи и первоисточник Ваш сайт, т.к. большинство пинг сервисов достаточно длительное время хранят логи всех пингов.
Можно, конечно, самостоятельно настроить авто-пинг новых постов блога, например, в WordPress это делается через админку. Но моя первоначальная цель была – пинговать любой пост, статью с любого сайта вне зависимости от того, есть ли у этого сайта RSS-канал, поддерживает ли его хостинг PHP или нет и т.д.
В целом, та цель, которую я первоначально перед собой ставил, была достигнута. Последняя версия “Пинговалки” поддерживает многопоточный пинг по неограниченному количеству сервисов. После выпуска “Пинговалки” пступило несколько предложений от пользователей программы, в т.ч. сделать поддержку многопоточной отправки пингов не только по нескольким сервисам, но и нескольких страниц.
Пока работа по “Пинговалке” находилась в “долгом ящике” были и другие предложения и пожелания. В итоге, когда критическая масса таких пожеланий была набрана, я решил приступить к разработке новой версии. Раз программой пользуюсь не только один я – то почему бы и не разработать на благо общества новую версию, да и для себя кое-каких фич в программе сделать.











Свежие комментарии