top-image

Новые записи

Нашёл свою старую статью, которую всё собирался-собирался, но так и не дописал. Файл датирован февралём 2010 года – уже порядочно времени прошло, всё откладывал, да откладывал.

Статья не дописана. Выложу как есть. Если кто захочет закончить – милости прошу, размещу ссылку на продолжение. А может быть, эта публикация меня самого смотивирует найти время ;)

В предыдущем посте (январь 2010) мы рассмотрели проведение http запроса с помощью синхронного сокета. Сегодня доработаем тот пример, но вместо синхронного (блокирующего) мы будем использовать асинхронный (неблокирующий) сокет. Разобравшись с данной темой, мы сможем заняться более интересными вещами с сокетами :)

…нажми для продолжения

Количество вхождений строки

Всем привет. Теперь и C# стороной не обойдём.

Ровно пять лет назад выкладывал функцию для определения количества вхождений одной строки в другую на delphi (количество подстрок в строке).

Вот мой вариант на C#:

public int PosCount(string substr, string str)
 {
      return str.Split(new string [] {substr}, StringSplitOptions.None).Length - 1;
 }

Есть у меня хороший друг, Deliaz. Знаю его лет семь или даже восемь как исключительного хорошего человека (бла-бла-бла и так далее :) ). Познакомились как-то на форуме одном, которого, к слову, уже и в помине нет. Общались много в аське, обсуждали новости, немало проектов делали и сделали вместе, начинали тогда практически с азов.

Потом была встреча в Киеве (я из Питера, а он из Москвы), я ездил в Мск, он в Питер, ну и так далее. Биография какая-то получается: в общем, суть в том, что Денис начал вести блог по jQuery, и я не мог оставить это незамеченным :)

А вот и сам блог: jQueryIdeas.ru – легко запомнить, типа jQuery и идеи. На окончательный выбор домена оказал влияние и я в том числе :)  а ещё я орфография частично правил :3

И самое главное, что блог не пустой! Дел основательно подошёл к созданию качественного контента и написал много статей/заметок заранее, так что там _уже_ есть, что почитать. Вот например, реализация механизма drag’n’drop на веб-странице или вариант страницы-визитки, состоящий из четырёх блоков, довольно красиво анимированных, – это из того, что мне самому нравится больше всего.

Надо же немного критики, да? Это же реальный обзор блога :) Итак, мои пожелания блогу:

  1. Дел, включи комменты :)
  2. И чуть в футере надо исправить и пробежаться по явным опечаткам:
    jqueryideas
  3. Контент – больше уникальных штук! Ты всё делаешь сам, но многое (и ты сам об этом пишешь) уже где-то есть, хоть и реализация другая. Да, это тоже нужные вещи, блог посвящён программированию, а не готовым решениям, но фигачь больше чего-то сногсшибательного, пусть и не всегда применимого. Хотя тут тоже можно поспорить :)

Welcome! И будем рады критике в комментах.

Да, отойдём от темы delphi и парсеров сегодня. Просто немного о насущном.

Почему такой пост? Вот, например, был один про 3d-движок на delphi, который очень условно можно таковым назвать. Просто пересчёт координат, да и то не лучшим способом. Теперь мы поступим умнее, но будем уже всё делать в маткаде. А что? Тоже ведь программирование. …нажми для продолжения

Писал тут на php один парсер, получал html-код, а его парсил через domdocument.

Чтобы не запутаться, и всё было наглядно, написал себе функцию, которая выводит структуру в удобном виде.

…нажми для продолжения

Иногда бывает так: есть какой-то текст, с виду обычный, ни чем не примечательный текст. А все буквы в нём заменены на аналоги в русском/английском. Выглядит так же, а для проверки на уникальность или для поисковых систем, скажем, не очень хороший текст.

Итак, поставим простую задачу: выделить цветом все русские (или английские буквы) в RichEdit.

…нажми для продолжения

Писал для себя, поэтому долго не думал, как назвать :)

В модуле описан класс 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);
    procedure AddItemToList(List: TListView);
    procedure ApplyColumnsToList(List: TListView);
    procedure ItemToMyItem(List: TListView; ItemIndex: Integer);
    procedure CaptionToMyItem(List: TListView);
    procedure CaptionWidthsToMyItem(List: TListView);
    function IsNumeric: Boolean;
    procedure StrToMyItem(s: String);
    function MyItemToStr: String;
    procedure Clear;
    function Count: Integer;
  end; ...нажми для продолжения

Продолжаю выкладывать старые исходники. Ещё немного, и скоро пойдут полноценные статьи – появилось то, о чём можно написать :)

Мб отойдём немного от delphi, блог всё-таки parsers.info – парсеры там, всё такое.

Ну ладно, оки-доки. Программа StringWorks достаточно простая, но тем не менее очень полезная. По крайней мере мне.

Последняя версия датирована аж апрелем 2009 года. Не заглядываю в исходники, выкладываю как есть. Получите.

…нажми для продолжения

Привет. Сегодня выкладываю исходник первой версии удачной на мой взгляд программы mr.gen.

Суть программы: мы вводим определённую маску, программа генерирует текстовый файл с нужными нам комбинациями символов. Чем программма уникальна? Мы можем задать все возможные варианты каждого символа, а программа выдаст все возможные варианты строки с символами во всех возможных их вариантах.

Очень много направлений, в которых программу можно доделать, – mr.gen with symbol filter, например. При использовании кода указываем автора, при копировании поста указываем источник. …нажми для продолжения

Ровно три года назад (ого! – сам думаю, как быстро время летит) написал и выложил на блог программу reparser.


Блог уже давно на автономном существовании, нет времени писать. …нажми для продолжения

Привет. В delphi для работы с буфером обмена есть модуль ClipBoard, ещё можно работать с буфером через api. Но мы сегодня не будем углубляться в работу с буфером. Наша задача — отследить изменение буфера обмена.

Это всё сводится к обработке сообщения WM_DRAWCLIPBOARD, но дело в том, что никто просто так нам его не отправит.  …нажми для продолжения

Иногда может потребоваться определить этот небезызвестный показатель в своей программе.

Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот эта). Далее в заметке буду использовать wmid 000000000000 для примера. Можно и картинку распознать — не вопрос, но зачем так сложно?

Побродив немного по форумам и прочим ссылкам из выдачи, нашёл ещё пару возможностей определить WebMoney BL. Пара скриптов с https и, о чудо, простой скрипт, выдающий основную информацию о сертификате.

…нажми для продолжения

Сегодня начну пост с того, что недавно пришлось восстановить блог с бэкапа не первой свежести. Связано это с тем, что хостинг прогорел, а я был в области и не успел сделать бэкап.

Пропали некоторые последние комментарии и один пост, про то, что блог теперь уже не dofollow, но все комментарии, сделанные до того поста, остались dofollow.

Плюс хочу выразить благодарность пользователю Alex, который обратил внимание на мелочность и ненужность некоторых заметок. Исправимся :)

Вполне может оказаться необходимым контролировать перемещение формы пользователем — будь то некоторая стыковка к границам экрана или необходимость запретить перемещать форму.

Мы сперва лезем в Events, видим, что события OnMove нету.

…нажми для продолжения

Итак, ребятки, чуть больше года назад, выложил я свою наработку — сороковую симфонию Моцарта из внутреннего динамика.
Программа просто запускалась и звучала. Звучала, как надо.
…нажми для продолжения

Написал нехитрую программку для заполнения форм и прочего из буфера обмена. Принцип очень простой:

Открываем, редактируем список из строк и оставляем поверх всех окон. Изначально выделена первая строчка, она находится уже в буфере обмена. Нажимая Shift-Insert, мы можем это, очевидно, куда-либо вставить.

Программа перехватывает нажатие Shift-Insert и, когды ты уже отпустил, копирует в буфер следующее значение.

То есть, с достаточной подготовкой, можно быстро заполнять формы, нажимая Shift-Ins, Tab, …

При закрытии программы ClipFill список сохраняется.

Под катом программа, исходник и вопрос к читателям. …нажми для продолжения

Привет! В одной из предыдущих статей мы перечисляли все компоненты определённого типа на форме, мы могли присвоить им одно и то же свойство, получить их содержание и так далее.

А что если, например, у нас на форме штук 20 TPanel, и нам нужно у пяти из них поменять высоту?
Передо мной сейчас как раз и встала такая задача.
…нажми для продолжения

Привет! Давно не писал :)
Как известно на главной странице pr-cy.ru есть даты обновлений тИЦ, pr и яндекс выдачи. Я, как и многие, часто захожу туда, дабы проверить, не обновилось ли что-нибудь.
Сегодня напишем небольшую программу-пример, показывающую, как получить эти даты. …нажми для продолжения

Приведение типов в delphi
Приветствую. В завершение цикла заметок про объект Sender и операторы as и is хотелось бы затронуть и конструкцию тип(переменная). Далее поговорим про различия с объект as тип.
…нажми для продолжения

crystalbit (18:53:02 16/02/2010)
полмесяца в блог не писал
faza02 (18:53:25 16/02/2010)
дата)

Действительно, учёба навалилась, время отнимает. Да и мотивация писать тоже страдает. Сегодня хочу поговорить о том, что я запланировал, и оглянуться назад, посмотреть на то, что уже было сделано.
…нажми для продолжения

pagerank.dcu - модуль для определения pagerank на delphi Модуль для определения google pagerank на delphi. Сам модуль и описание дальше.
…нажми для продолжения

bottom-img