DevProg: Блог для программистов

Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!

Архив рубрики ‘Хитрости’

Узелок впрок! Как реализовать функцию Undo в TMemo ?

Опубликовал devprog на Ноябрь 3, 2008

блог программистовНе многие программисты на Delphi знают, что в компоненте TMemo есть функция отмены последней правки. Её вызов выглядит следующим образом:

Memo1.Perform(EM_UNDO,0,0);

Для проверки, киньте на форму Memo и Button и по OnClick напишите вышенаписанный код.

 

Вы можете присылать свои советы для рубрики “Узелок Впрок” по адресу seorobo@gmail.com. Спасибо.

Рубрика: Delphi, Узелок впрок, Хитрости | Комментарии (3) »

Регулярные выражения для новичков!

Опубликовал devprog на Октябрь 28, 2008

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

Статьи:

Регулярные выражения, Часть I

Регулярные выражения, Часть II

Сайты:

PCRE.RU – Регулярные выражения совместимые с Perl.

REGEXP.RUРегулярные выражения

RSDN.RUРегулярные выражения в Delphi

PEREPLET.RU Регулярные выражения в PERL

Сервисы проверки регулярных выражений:

www.regexlib.com

www.regexp.ru

www.regexpal.com

www.rexv.org

Программы для работы с регулярными выражениями:

RegexBuddyОтличная программа для работы с регулярными выражениями.

 

Рубрика: Программирование, Сервисы, Хитрости | Комментарии (3) »

6 важных советов начинающим программистам

Опубликовал devprog на Октябрь 26, 2008

Совет 1: Не пасуйте перед трудностями
Трудности будут подстерегать вас на каждом шагу, но это не повод всё бросить правда?! Ищите решение на форумах, спрашивайте на блоге и в конце концов попытайтесь найти решение проблемы сами – это самый лучший вариант из всех, так как вы не просто повторили тупняком чьи-то слова – вы сами, путём долгих попыток всё таки нашли выход из ситуации.

Совет 2: Проверяйте свой код сразу
Может показаться «дебильным советом», но многие люди делают ошибки не в алгоритмах – а именно в коде, да ещё например в самом начале листинга. Просто одна ошибка может быть вызвана из за другой и порой очень трудно отследить родительскую (самую главную) ошибку в коде.

Совет 3: Структурируйте свой код
Всегда старайтесь сделать так, чтобы ваш код смогли прочитать не только вы, но и другие люди. И кстати не просто прочитать а понять его! Делайте так, чтобы ваш код был красивым, в самом прямом смысле этого слова.

Пример плохого кода:

if (!a1) { echo («a1 is false»); }

Удобный код:


if (!a1)

{
      echo «a1 is false»;
}

Думаю смысл ясен?!

Совет 4: Комментируйте свой код
Важнейшее правило в программировании! Люди которые просматривают ваш код, порой не сразу понимаю что например вот здесь, вы разбираете файл на 3 отдельных файла и в каждом заменяете слово «Ура» на слово «Победа».

Совет 5: Если ван надоел ваш проект – отдохните!
Например вы сидите и пишите какую-нибудь программу и тут она вам уже не нравиться и вы решаете её стереть/бросить и т.д. Не в коем случаи не нужно этого делать. Просто закройте окно редактора и поиграйте например в игрушку – проще говоря отдохните. Или вот ещё момент: вы программируете, но застряли на каком-то куске кода. Вы бьётесь как рыба об лёд, но решение в голову не приходит? Отдохните, расслабьтесь но не бросайте дело на пол дороги – это ужасная привычка!

Совет 6: Придерживайтесь собственного стиля!
То есть, пишите свои программы одним «почерком» не меняя стиль написания от модуля к модулю или от программы к программе! Поверьте – это очень полезный совет!

А каких правил в программировании придерживаетесь вы? Комментируйте, ваше мнение очень важно!

Рубрика: Новичку, С и С++, Хитрости | Комментарии (6) »

200 недокументированных функций Windows API

Опубликовал devprog на Октябрь 11, 2008

Возвращаясь к вопросу о недокументированных функциях API нужно упомянуть, что существует (уже) достаточное колличество неофициальных справочников и документов по этой теме. Ведущими искателями (если можно так выразиться) таких функций, являются ребята из конторы NTInternals.

Так как справочник в формате CHM для скачивания больше не доступен по версии официального сайта, мне всё же удалось найти уголок в интернете, где сохранился этот манускрипт.

Пользуйтесь на здоровье. Кстати, на официальном сайте, скоро так же станет доступна и версия для функций kernelmode, в то время как сейчас доступны лишь описания функций для usermode. Ну что ж, спасибо и на этом…

Недокументированные функции Windows API

Рубрика: Хитрости | Комментарии (5) »

MessageBox задом-на-перёд.

Опубликовал devprog на Октябрь 8, 2008

Ещё одна программёрская хитрость. Заключается в том, что окошко функции MessageBox из библиотеки User32.dll можно перевернуть задом-на-перёд. Выглядеть это будет именно вот так:

Правда необычно? Такое доступно из любого языка программирования, который способен работать с функциями API ОС Windows. Вся фишка в том, чтобы к стилю окна приплюсовать определённое число. Число 180000h (шестнадцатиричное), или 1572864 (десятичное). Результат такого действия вы видите на картинке.

Пример на Delphi:

MessageBox(0,’Привет’,0,MB_ICONHAND+1572864)


Выполнить подобное можно и на Си и на Ассемблере. Короче везде где можно вызывать API функции. Вот такой вот хитрый совет. :)

Рубрика: Хитрости | Комментарии (16) »

Недокументированная функция блокировки ввода

Опубликовал devprog на Октябрь 8, 2008

Мало кто знает, что в ОС Windows есть функция блокировки ввода с клавиатуры и мыши соответственно. Есть она и в XP и может быть даже в Vista (не пробовал). Имя ей – BlockInput из библиотеки User32.dll. В качестве параметра используется 1 и 0 (один параметр). Соответственно 1 – заблокировать, 0 – разблокировать. Только вот параметр нужно передать в стек вручную с помощью push, иначе заметны глюки.

Где применить?

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

Пример (любой язык с ассемблерными вставками)


push 1 ;блокируем
call BlockInput


Естесственно сначала нужно обьявить процедуру, как например в Delphi:

procedure BlockInput; external ‘user32.dll’;


Рубрика: Delphi, Хитрости | Комментарии (2) »