Сегодня рассмотрим ещё один простой способ определения специальных папок Windows. К специальным относятся такие директории как, например: “Мои документы”, “Application Data”, “Cookies” и т.д. В разное время развития операционной системы Windows, как и в разное время развития Delphi предлагалась масса различных способов определения путей к специальным директориям от самых простых – использование GetWindowsDirectory до таких “экзотических” как работа с интерфейсом ISHFolder и т.д.
Сегодня расмотрим более простой, на мой взгляд, способ получения всех без исключения системных папок. При этом мы воспользуемся всего одним заголовочным модулем Delphi – SHFolder.pas. Этот модуль содержит необходимы типы данных и константы для работы с библиотекой shfolder.dll, которая доступна во всех версиях Windows, начиная с Win95.
Наверное нет такого программиста или любителя, который не мечтал бы поучаствовать в каком-нибудь большом и важном проекте. Или разработать такую программу, которая была бы полезна не только ему одному, но и, как минимум, знакомым и друзьям. И вот такой момент наступает. Свершилось – пригласили поучаствовать в проекте, или нашел-таки свою идею, такую, которую до тебя ещё никто не пробовал реализовать в виде машинного кода.
Ты рвешься “в бой”, руки так и тянутся к клавиатуре, что бы начать работать на программой. Не торопись, дорогой начинающий программист. Не забывай об одном – всегда есть тонкие моменты в программировании, которые весьма не часто можно встретить подробно описанными в литературе на основании которой мы становимся теми кем стремимся стать ежедневно – профессионалами.
Не скажу, что я добился своей цели в программировании и стал профессионалом. Нет. До уровня профессионала мне ещё расти и расти. Однако опыт поспешных разработок имеется и хотелось бы поделиться с Вами теми моментами, из-за которых мне сейчас приходится усердно перелопачивать тысячи строк кода. Итак, начнем по порядку. Читать далее »
Собственно почему я вновь возвращаюсь к вопросу работы с Captcha? Во-первых, потому что способы защиты все время улучшаются и лишними знания по вопросам работы таких защит явно не будут. Во-вторых, используя полученные знания, можно будет немного сократить расходы трафика и нервов при работе со всякого рода файлообменниками прочими сайтами с защитой от ботов, которые пестрят уймой рекламы на каждой страницы – будем обходиться загрузкой всего одной картинки и целевой информации.
Ну, и в-третьих, в одном из постов рассматривался вопрос парсинга выдачи поисковиков. Там я никак не затрагивал вопрос “Что делать если всё-таки попал в бан при парсинге?” Ответ прост – вводим полуавтоматически предложенный поисковиком код (Captcha) и двигаемся дальше. Читать далее »
Вот наконец-то и сподобился я на тему работы с XML-RPC в Delphi. Ещё с того самого момента, как испробовал для постинга в блог программу Zoundary Raven, заглядывался на этот протокол, но всё как-то было лень разбираться как и что писать, куда отправлять и т.д. А сегодня получил письмо от читателя блога с просьбой осветить этот вопрос, посоветовались с Altmer’ом и решили “Попытка – не пытка”. Лишними такие знания точно не будут ни нам ни читателям “Delphi в Internet“.
Как и полагается, изучение вопроса начали с поиска достоверной информации в Сети. Надо сказать, что такого “изобилия” информации мне лично ещё не встречалось. Единственный всем известный компонент, разработанный для этих целей в далеком 2001 году, и тот сказочным образом пропал с sourceforge.net. Российские блоггеры и программисты тоже не особо красноречивы – в основном статьи на тему “XML-RPC в Delphi” сводятся к описанию проблем, но без каких-то конкретных выкладок, листингов и прочих атрибутов статей про программирование. В общем, то ли плохо искали, то ли действительно всё так плохо, но начинать пришлось с нуля. Может это и к лучшему – будем владеть вопросом так сказать на все 100. Может и сами какой-никакой модуль для Delphi со временем соберем. А пока начнем с основ. Читать далее »
В предыдущей статье, в примере, я не стал описывать принцип работы с методом Synchronize, и как я теперь понимаю напрасно. Конечно, я выложил архив с примером, где этот метод встречается в нескольких местах, и конечно эти моменты были мной прокомментированы. Однако есть несколько нюансов, касающихся синхронизации, да и не только ее, о которых мне все же следовало упомянуть в статье, а не в нескольких строках кода. В этой статье я попытаюсь восполнить этот пробел. Читать далее »
Сегодня снова вернемся к вопросу о ловушках и посмотрим их реализацию в том виде, в котором можно читать текст, набранный в любом приложении, а не просто просмотреть виртуальный и скан-код клавиши.
В прошлый раз мы рассмотрели простейший из всех известных мне примеров применения ловушек в Windows. И остановились на том, что ловушка сама писала данные о нажатых клавишах в текстовый файл. Читать далее »
Достаточно давно прошло то время, когда использование многопоточности в любых серьезных программах считалось хорошим тоном. На сегодняшний день, это необходимость от которой очень многое зависит, и в первую очередь – удобство использования приложения. Почти любой современный программный продукт (хоть исключения и возможны, я таких примеров не знаю, тот-же стандартный “калькулятор” при расчетах использует 2 потока), будь он полностью реализован в главном потоке, будет вызывать у нас огромное количество отрицательных эмоций всякий раз при работе с сетью, файлами, и другими ресурсоемкими операциями.
Можно конечно обойти вопрос использования потоков, применяя в “затяжных” циклах метод Application.ProcessMessage, позволяя приложению периодически обрабатывать очередь сообщений. Но это значительно замедлит выполнение цикла, а при работе с сетью и вовсе не эфективно, поскольку большинство сетевых функций порою очень долго выполняют свои запросы. Читать далее »
Видимо в Сети в настоящее время практически не осталось standalone-блогов, которые не использовали бы сервис FeedBurner для ведения статистики по подписчикам блога.
Действительно, этот сервис наилучшим образом походит для оценки и анализа блога, просмотра статистики и т.д. Кроме того большинство RSS-лент и каталогов блогов сегодня просят при регистрации предоставлять адрес RSS-канала именно в FeedBurner’е.
Вы, наверное, уже замечали и не раз, что некоторые сервисы, например тот же Блогун, каким-то образом умудряются “выдернуть” из адреса Вашей RSS-ленты количество подписчиков? Сегодня мы с Вами и разберемся каким образом это происходит.
Вот и пришло время сделать небольшой обзор по тому, что сделано в блоге. Провести так сказать инвентаризацию того, что есть и прикинуть, что будет.
Все-таки как ни крути, а периодический обзор исходников, компонентов и готовых программ проводить следует хотя бы потому что:
Блог растёт и вместе с ним растёт суммарный объем исходного кода выкладываемого на суд посетителей и дабы не повторяться следует представлять состав своего “богатства”
Структурированная информация довольно хорошо помогает определиться с ближайшими целями и задачами, которые следует решать в блоге или вне его.
Информация предоставляемая в форме списка, каждый пункт которого сопровождается ссылкой на источник достаточно хорошо воспринимается посетителями.
В этом микро-обзоре мы рассмотрим всё что касается применения Delphi для Web. Что было разработано и что планируется разработать в ближайшем будущем. Читать далее »
Привлекательный и необычный интерфейс, играет не самую последнюю роль в популярности и востребованности любого программного продукта. И хотя, все же, в некоторых случаях использование средств, стандартной VCL является наиболее верным решением, речь сейчас не о них.
Большинство разработчиков стараются обходить вопрос, использования шкур, стороной. Причины разные, самая распространенная – нежелание вникать в “сложности” работы со шкурами. А есть ли они, те самые сложности, которых многие опасаются? Посидев над обрисовавшейся задачкой часик – другой, я выяснил главное – все предельно просто. Представляю на ваш суд, результат своих изысканий. Читать далее »
Свежие комментарии