Roman Yankovsky Blog


Дженерики: ограничение "constructor"

Наш японский коллега Jun Hosokawa заметил интересную особенность ограничения "constructor" в дженериках Delphi.

type
TConstructorConstraint<T: constructor> = class
end;

В качестве вступления цитата из справки:
автор
This means that the actual argument type must be a class that defines a default constructor (a public parameterless constructor), so that methods within the generic type may construct instances of the argument type using the argument type’s default constructor, without knowing anything about the argument type itself (no minimum base type requirements).

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

Читать далее
добавлено: 26 сен 13 просмотры: 992, комментарии: 0



Разработка "стандартных" TAction

Почти все мы сталкиваемся с разработкой довольно сложных пользовательских интерфейсов. Приходится работать с нагромождениями кнопок, тулбаров, меню и всего, что только может придти в голову. К счастью, в Delphi есть компонент TActionList, немного упрощающий жизнь. И он ведь действительно помогает бороться с растущей сложностью интерфейсов.

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

Как говорится, любую проблему можно решить добавлением еще одного уровня абстракции. И такая возможность есть.

Читать далее
добавлено: 17 сен 13 просмотры: 815, комментарии: 0



Перспективы мобильной разработки на Delphi

Близится релиз Delphi XE5 (многие уже отмечают) и Embarcadero вслед за поддержкой iOS обещает нам поддержку Android. Мне как гику это кажется интересным, но нужна ли поддержка мобильных устройств рынку? Ведь есть уже немало средств разработки: от Objective C и Java до штук вроде Xamarin. Зачем еще одно?

Читать далее
добавлено: 17 сен 13 просмотры: 1209, комментарии: 0



TChromium в FireMonkey

Очень я страдал из-за отсутствия компонента-браузера в FireMonkey. Известный проект Delphi Chromium Embedded все-таки включил поддержку FMX в последнем билде. Но не смотря на то, что прошло довольно много времени, поддержку FMX2 автор добавлять не торопится. В итоге пришлось брать ситуацию в свои руки.

Читать дальше
добавлено: 07 мар 13 просмотры: 1169, комментарии: 0



LISPообразное нечто

Возился немного с задачами курса Programming Languages и захотелось попробовать сделать на Delphi интерпретатор простого языка. Отбирать хлеб у MS и Embarcadero я не хочу, поэтому не буду даже пытаться что-то оптимизировать и тип данных будет только один — целые числа. Синтаксис пусть будет похож на LISP.

Читать далее
добавлено: 06 мар 13 просмотры: 977, комментарии: 0



Вкратце о презентации Delphi XE3

Посетил презентацию Delphi XE3. Было интересно. Изложу скороговоркой то, что зацепило внимание. На презентации было сказано много больше, но не все темы мне близки.

Читать далее...
добавлено: 12 сен 12 просмотры: 2144, комментарии: 0



Немного покритикую FireMonkey

Вдогонку к предыдущему посту еще немного поговорим о FireMonkey. Очень неприятная для меня вещь — ощущение, что при разработке стандартных компонентов никто и не задумывался, что от них кто-то будет наследоваться, пытаться расширять и изменять их поведение. Если сравнивать с VCL, то доступных компонентов FireMonkey сейчас очень и очень мало. И мне кажется, что судьба фреймворка сегодня во многом зависит именно от удобства разработки новых компонентов.

Разберу конкретный пример. Читать далее...
добавлено: 19 июл 12 просмотры: 1893, комментарии: 0



Расширяем TTabControl в FireMonkey

Наконец-то разжился Delphi XE2 и пробую работать с FireMonkey. Довольно интересно, FireMonkey выглядит гибкой штукой. Особенно привлекает кроссплатформенность. Расскажу о том, что успел понять.

Решил начать с простенькой кастомизации компонента, чтобы получше разобраться с тем, как все устроено внутри. Под руку попался TTabControl, мне не хватает «крестика» на каждой вкладке, чтобы их можно было закрывать как в браузере.


Читать далее...
добавлено: 11 июл 12 просмотры: 1398, комментарии: 0



Об экономическом эффекте отказа от курения

По данным Российского мониторинга экономического положения и здоровья населения 2006 г., курящие работники болеют чаще, чем некурящие, особенно после 35 лет. В сумме совокупные косвенные потери от курения из-за более низкой производительности труда и из-за дополнительных потерь от нетрудоспособности курильщиков составляют 207,5 млрд. рублей, что соответствует 0,77% ВВП или 22% расходов консолидированного бюджета на здравоохранение. [...] читать дальше...
добавлено: 03 июл 12 просмотры: 1218, комментарии: 0



Трудные переговорщики

Слово Гэвину Кеннеди. «Переговоры. Полный курс»: Для того, чтобы изменить мнение группы людей относительно какого-либо предложения, не нужно убеждать каждого, кто с вами не согласен, поддержать вашу точку зрения. Вы не должны обращаться к тем, кто придерживается крайних точек зрения и наиболее горячо выступает за предложение или против него. Намного эффективнее будет обратиться к людям, [...] читать дальше...
добавлено: 22 июн 12 просмотры: 1566, комментарии: 0