top-image

Архив: delphi

Старая статья. Выполнение http-запроса на одном асинхронном сокете
Нашёл свою старую статью, которую всё собирался-собирался, но так и не дописал. Файл датирован февралём 2010 года – уже порядочно времени прошло, всё откладывал, да откладывал. Статья не дописана. Выложу как есть. Если кто захочет закончить – милости прошу, размещу ссылку на продолжение. А может быть, эта публикация меня самого смотивирует найти время ;) В предыдущем посте (январь 2010) мы рассмотрели проведение ...more»
Подсветить символы в RichEdit
Иногда бывает так: есть какой-то текст, с виду обычный, ни чем не примечательный текст. А все буквы в нём заменены на аналоги в русском/английском. Выглядит так же, а для проверки на уникальность или для поисковых систем, скажем, не очень хороший текст. Итак, поставим простую задачу: выделить цветом все русские (или английские буквы) в RichEdit. Вспомним ASCII-коды букв: 192-255 для русских, 65-90 и ...more»
Модуль MyItems
Писал для себя, поэтому долго не думал, как назвать :) В модуле описан класс TMyItem, упрощающий работу с TListView в режиме таблицы (ViewStyle - vsReport). type TMyItem=Class(TObject) Caption: String; SubItems: TStrings; constructor Create; destructor Destroy; override; procedure AddValueToItem(Value: String); procedure ApplyColumnWidthsToList(List: TListView); ...more»
mr.gen v0: исходники
Привет. Сегодня выкладываю исходник первой версии удачной на мой взгляд программы mr.gen. Суть программы: мы вводим определённую маску, программа генерирует текстовый файл с нужными нам комбинациями символов. Чем программма уникальна? Мы можем задать все возможные варианты каждого символа, а программа выдаст все возможные варианты строки с символами во всех возможных их вариантах. Очень много направлений, в которых программу можно доделать, – mr.gen ...more»
Reparser: исходники
Ровно три года назад (ого! – сам думаю, как быстро время летит) написал и выложил на блог программу reparser. Блог уже давно на автономном существовании, нет времени писать. Программирование ушло на второй, если не третий, план – я теперь работаю инженером-конструктором, уже на второй работе. Раньше проектировал сварные металлоконструкции из стальных профильных труб (квадратных и прямоугольных), а теперь – более точные ...more»
Контролируем буфер обмена
Привет. В delphi для работы с буфером обмена есть модуль ClipBoard, ещё можно работать с буфером через api. Но мы сегодня не будем углубляться в работу с буфером. Наша задача - отследить изменение буфера обмена. Это всё сводится к обработке сообщения WM_DRAWCLIPBOARD, но дело в том, что никто просто так нам его не отправит.  Немного теории. Есть такое понятие, как "Clipboard chain" - ...more»
Определяем WebMoney BL
Иногда может потребоваться определить этот небезызвестный показатель в своей программе. Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот эта). Далее в заметке буду использовать wmid 000000000000 для примера. Можно и картинку распознать - не вопрос, но зачем так сложно? Побродив немного по форумам и прочим ссылкам ...more»
Контролируем перемещение формы
Сегодня начну пост с того, что недавно пришлось восстановить блог с бэкапа не первой свежести. Связано это с тем, что хостинг прогорел, а я был в области и не успел сделать бэкап. Пропали некоторые последние комментарии и один пост, про то, что блог теперь уже не dofollow, но все комментарии, сделанные до того поста, остались dofollow. Плюс хочу выразить благодарность пользователю Alex, ...more»
Про сороковую симфонию Моцарта
Итак, ребятки, чуть больше года назад, выложил я свою наработку - сороковую симфонию Моцарта из внутреннего динамика. Программа просто запускалась и звучала. Звучала, как надо. В те времена я ничего не понимал в нотах (и в таких сферах жизни, как работа водителя в Казахстане, к слову, тоже ничего не понимал, как и сейчас). С тех пор научился играть на гитаре, немного развил ...more»
ClipFill
Написал нехитрую программку для заполнения форм и прочего из буфера обмена. Принцип очень простой: Открываем, редактируем список из строк и оставляем поверх всех окон. Изначально выделена первая строчка, она находится уже в буфере обмена. Нажимая Shift-Insert, мы можем это, очевидно, куда-либо вставить. Программа перехватывает нажатие Shift-Insert и, когды ты уже отпустил, копирует в буфер следующее значение. То есть, с достаточной подготовкой, можно быстро ...more»
Работаем только с некоторыми компонентами
Привет! В одной из предыдущих статей мы перечисляли все компоненты определённого типа на форме, мы могли присвоить им одно и то же свойство, получить их содержание и так далее. А что если, например, у нас на форме штук 20 TPanel, и нам нужно у пяти из них поменять высоту? Передо мной сейчас как раз и встала такая задача. Всё очень просто: Выделяем нужные компоненты ...more»
Парсим даты апдейтов с главной pr-cy
Привет! Давно не писал :) Как известно на главной странице pr-cy.ru есть даты обновлений тИЦ, pr и яндекс выдачи. Я, как и многие, часто захожу туда, дабы проверить, не обновилось ли что-нибудь. Сегодня напишем небольшую программу-пример, показывающую, как получить эти даты.1) Сперва заходим на сайт, видим: Три даты. Чтож, ТЗ есть. Теперь смотрим исходный код фрагмента: <p><span class="blue">G</span><span class="red">o</span><span class="yellow">o</span><span class="blue">g</span><span class="red">le</span> <span class="lar">PR</span><span class="date"><acronym ...more»
Приведение типов в delphi применительно к объектам
Приветствую. В завершение цикла заметок про объект Sender и операторы as и is хотелось бы затронуть и конструкцию тип(переменная). Далее поговорим про различия с объект as тип. В посте о Sender: TObject я рассмотрел использование объекта Sender, который передаётся процедуре-обработчику. Приведение и проверку типа объекта с помощью as и is я также рассмотрел в своё время, а сегодня поговорим о подобной конструкции: procedure ...more»
pagerank.dcu — модуль для определения pagerank на delphi
Модуль для определения google pagerank на delphi. Сам модуль и описание дальше. Привет! Мне однажды потребовалось определить тИЦ и pagerank в одной программе на delphi. Полез в интернет, посмотрел, как происходит определение. Вот для тИЦ проблем нет - нужно всего лишь подставить адрес нужного сайта в запрос и пропарсить xml результат. С pagerank ситуация другая: google не хочет, чтобы каждый ...more»
WinSock: Получение хоста по адресу
В недавнем примере мы делали http-запрос с помощью синхронного сокета. Мы обращались к конкретному серверу, зная его ip. Непорядок, сегодня займёмся определением ip-адреса по доменному имени, по адресу сайта. MSDN по крайней мере предлагает нам две функции для таких операций. Первая - функция gethostbyname, вторая - функция getaddrinfo. Microsoft рекомендует использовать getaddrinfo, учитывая при том, что она появилась в winsock 2. ...more»
Числовой TEdit с использованием WinApi.
Необходимо, чтобы в TEdit пользователь мог ввести только цифры? Я часто встречаю различные решения данной задачи, которые в основном сводятся к обработке события OnKeyPress. Сегодня рассмотрим кардинально другой подход - изменение стиля TEdit с помощью WinApi. Итак, как же чаще всего фильтруют? Этот способ я даже встречал в каких-то официальных исходниках-примерах от borland. Суть метода состоит в том, чтобы обрабатывать событие OnKeyPress, ...more»
Построчный парсинг
Привет. Сегодня хочу рассмотреть построчную работу с файлом. Использовать будем стандартный паскалевский ввод/вывод: writeln и readln. Например, перед нами задача: убрать от одного до десяти первых символов в каждой строке. Кстати, передо мной эта задача вчера реально встала, и я написал программу за 5 минут. Теперь и мы с тобой рассмотрим процесс написания. Итак, сегодня будем писать со всеми прелестями delphi, читай ...more»
Изменение размеров буфера консольного окна
Привет! Это второй пост, который был потерян когда-то в июле в связи с переездом на другой хостинг. Речь пойдёт о так называемом Screen Buffer. Консольное окно само по себе имеет определенные размеры, обычно 24 на 80 символов. Также справа есть полоса прокрутки, с помощью неё можно увидеть то, что вышло за рамки экрана, так как когда мы всё пишем и пишем, например с ...more»
Функция copy или восстанавливаем пароль icq после заражения вирусом Piggy.
Привет, ты наверняка уже наслышан о недавно появившемся вирусе Piggy. Если не в курсе, буду краток: он использует принцип спама по цепочке. Вот тебе приходит ссылка от человека, мол, flash игра прикольная. Ты пишешь, мол, ага, знаем, спам. И тебе в ответ: нет, мол, не спам, ага. Качаешь, так как немного пьян, и с твоим номером происходит то же самое: пароль ...more»
WinSock: HTTP-запрос с помощью блокирующего сокета
Сегодня хочу начать цикл заметок о winsock. Около года назад я этим заинтересовался, потом незаслуженно забыл и забросил. WinSock - достаточно мощный инструмент, основа всех основ. Если ты пишешь программу на чистом api, тебе важен конечный размер программы или работаешь с хитрым протоколом, то сокеты просто незаменимы. В этой заметке рассмотрим, как открыть сокет и послать GET запрос серверу. Типы сокетов Вкратце. Есть ...more»
bottom-img