Delphi 2010

Блог Александра Божко

Архивы

Рубрики

Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Небольшой пост-шпаргалка. Буду предельно краток.

Допустим, у нас есть некий перечисляемый тип. Например:

  TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, // 0..4
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, // 5..11
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, // 12..18
ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, // 19..24
ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, // 25..31
ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, // 32..37
ftFixedWideChar, ftWideMemo, ftOraTimeStamp, ftOraInterval, // 38..41
ftLongWord, ftShortint, ftByte, ftExtended, ftConnection, ftParams, ftStream, //42..48
ftTimeStampOffset, ftObject, ftSingle); //49..51

Нам необходимо каким-то образом вывести тип поля из реального набора данных. Очевидно, проще всего название типа получить в виде строки. Для этого мы можем использовать следующую конструкцию:

GetEnumName(TypeInfo(TFieldType), Ord(aDataSet.Fields[I].DataType));

На выходе получаем строку, содержащую название типа для поля aDataSet.Fields[I].


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

К хорошему привыкаешь быстро. И то, как за последние лет десять эволюционировала Delphi IDE, возможно и не слишком заметно для разработчиков, которые постоянно работают с новыми версиями продукта. Но буквально недавно мне пришлось отлаживать проект, написанный на Delphi 7. Если честно, я и предположить не мог насколько некогда любимая IDE покажется неудобной, ненадежной и архаичной в сравнении с современными версиями Delphi. Никакие сравнения Мерседесов и Запорожцев не смогут дать адекватного представления о том, насколько Embt сделал процесс разработки более комфортным.

И среди многочисленных нововведений, старших версий Delphi, особое место занимает CodeSite Logger, который недавно был приобретен у компании Raize Software и сейчас устанавливается опционально. Вообще, логирование при отладке приложений штука не только удобная, но, зачастую и просто необходимая. Например, если вы хотите посмотреть, что происходит внутри компонента TDataSet во время открытия набора данных, никакой отладчик вам не поможет. Только лог. Что касается CodeSite, то на мой взгляд это очень удобный и функциональный инструмент. И единственным его недостатком – невозможность прямой отладки мобильных приложений. Хотя эта возможность весьма и весьма востребована. Конечно, здесь можно упомянуть TMS Logging (который я, кстати, купил, и обязательно сделаю обзор), но по удобству он довольно сильно уступает CodeSite.

В процессе разработки у меня родилась идея написать собственный логгер для отладки мобильных приложений. Я рассматривал два варианта передачи данных между мобильным устройством и ПК, по TCP и с помощью App Tethering. После нескольких экспериментов решил остановиться на более традиционном средстве. Собственно, на данный момент у меня получился рабочий прототип, который я описал в небольшом видео ролике.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Несколько лет назад я искал менее дорогую альтернативу DevExpress’овскому гриду. Собственно, выражение «искал» здесь не вполне уместно. Уже давно в среде Delphi разработчиков известно, что едва ли не единственной альтернативой cxGrid по доступной цене является TDBGridEh. И хотя уже тогда этот грид имел некоторые уникальные «фишки» функционально он всё же уступал более маститому конкуренту. Впрочем, это воспринималось вполне спокойно, поскольку порядки цен были не сопоставимы.

Недавно я вновь столкнулся с подобной проблемой, мне нужен был «продвинутый» грид, совместимый с Delphi 10.1 Berlin. И я снова не стал даже использовать Google. Выбор был очевиден. Всё тот же EhLib Components Pack.

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

Что же из себя представляет последняя версия продукта? Вероятно, воспринимать её в контексте DevExpress уже не уместно. Даже если вы бегло посмотрите на скриншоты, то поймёте, что GridEh реализует практически всё, что можно сделать в cxGrid. Читать далее


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Обновление сайта DelphiFeeds.ru назревало давно. Но, так уж получилось, что только этим летом я решился его сделать. И вот, после довольно продолжительной паузы, новый сайт запущен.

Что же поменялось, кроме дизайна?

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

Кроме того, авторы, которые размещают свои статьи на площадках, которые не парсятся автоматически (например, Хабр или официальный сайт Embarcadero), так же смогут сами разместить ссылки на DelphiFeeds.Ru.

Иными словами, всё, что собиралось автоматически так и будет собираться и размещаться на сайте автоматически. Но если авторы материалов хотят что-то добавить или поменять, они смогут сделать это самостоятельно.

Что нужно для того, что бы получить данные своей учётной записи?

Напишите мне info<собака>delphifeeds.ru и я пришлю вам данные, необходимые для входа. Впрочем, с большинством блоггеров я сам свяжусь в ближайшее время.

Поскольку новый DelphiFeeds сделан на WordPress, я думаю, любой блоггер без проблем разберётся с тем как добавить/отредактировать свой материал. Естественно, как и раньше, все публикации будут модерироваться и проверяться “на адекватность” и соответствие тематике.

В качестве варианта я рассматриваю систему голосования, которая будет автоматически снимать с публикации не понравившиеся читателям посты.

На сегодняшний день основную часть RSS лент, собранных в старой версии сайта я подключил. Оставшиеся блоги подтяну в ближайшее время. Если у вас есть неизвестные мне блоги или материалы, ссылки на которые вы хотите видеть на сайте – пишите.

Идеи и предложения по поводу развития проекта так же приветствуются. Так же приветствуется любая поддержка проекта рекламодателями – пишите!

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

И ещё один вопрос.

Все материалы старого сайта у меня сохранились. Как вы считаете, имеет ли смысл каким-то образом опубликовать архив ссылок на старые публикации? Например, в виде приложения.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Официально выпущено обновление RAD Studio  10.1 Berlin  (Update 1). Зарегистрированные пользователи могут скачать установочный iso образ на официальном сайте (6,8 Г).

Веб инсталляция.

Список багфиксов и функциональных изменений:

Feature and bug fix list for RAD Studio 10.1 Berlin Subscription Update 1

Лично поставить и  попробовать ещё не успел, планирую сделать это буквально сегодня.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Я уже неоднократно писал о SphereLive. В контексте данного блога  этот проект прежде всего интересен тем, что реализован на FireMonkey и является потрясающей демонстрацией возможностей данной платформы. И вот, буквально на прошлой неделе, была выпущена публичная бета продукта. Таким образом, читатели блога могут сами “пощупать” действительно сложное FireMonkey приложение.

sphere00

Пару слов о программе. В первую очередь нужно отметить то, что нынешняя версия Sphere позиционируется немного по-другому. Да, иногда так бывает…

Новая SphereLive это, не просто очередной мессенджер. Прежде всего, это инструмент, позволяющий эффективно организовать образовательный процесс. Он позволяет проводить дистанционные лекции, частные консультации, индивидуальные занятия и другие подобные мероприятия. При этом он оснащён практически всем необходимым для работы. Начиная с уникальной системы передачи файлов и заканчивая мощнейшей подсистемой биллинга.

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

Естественно, что Сфера использует главное преимущество FireMonkey – кроссплатформенность. Сейчас приложение доступно в Windows и MacOS редакциях. Android версия ожидается со дня на день.

Тем не менее, для меня, SphereLive интересна, прежде всего, как инновационный продукт с целым набором оригинальных решений. Иногда просто на уровне “… ух ты, как ты это сделал?” Кстати, один из разработчиков Сферы активно участвует в обсуждениях на форуме, посвящённом FireMonkey. Само по себе это может послужить поводом скачать приложение и обсудить технические вопросы непосредственно с автором. Поверьте, есть на что посмотреть, есть чему поучится.

 


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Одним из главных преимуществ Berlin‘а, является визуальный редактор ListView Item. За три месяца с момента выпуска продукта о нём не написал только ленивый. И он действительно удобен. Он экономит “массу времени, сил и духовной энергии…” (с). Но есть одна проблема, с которой столкнулся я, и судя по записям в многочисленных форумах, не я один. Как только свойство Item Appearance принимает значение DynamicAppearance, при работе с представлениями формы начинается чехарда.

ItemApp Читать далее


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Хорошая новость от Ярослава Бровина. Обновлён набор компонентов FGX, существенно расширяющий возможности мобильной разработки в Firemonkey.

Список изменений

  • TfgActionSheet:
    • Добавлены и реализованы события TfgActionSheet.OnShow, TfgActionSheet.OnHide, TfgActionSheet.OnItemClick.
    • Добавлены свойство TfgActionSheet.Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark – темную
    • Обновлен пример ActionSheetDemo.
  • TfgApplicationEvents – добавлены новые событии:
    • OnActivityResult (Андроид) – позволяет получить результаты/интенты из других приложений.
    • OnFormBeforeShown - вызывает непосредственно до момент отображения формы
    • OnFormActive - Вызывается, когда форма активируется.
    • OnFormDeactivate - Вызывается, когда форма деактивируется
    • OnFormCreate - Вызывается после создания экземпляра формы
    • OnFormDestroy - Вызывается до разрушения формы
    • OnScaleChanged - Вызывается, когда меняется скейл у формы. Например, при перетаскивании формы с одного экрана с одним скейлом на другой с другим скейлом (Больше актуально для OSX)
  • TfgProgressDialog, TfgActivityDialog:
    • Добавлены свойство Theme, позволяющее выбрать вариант темы: Auto – выбирает темную или светлую тему автоматически на основании текущего стиля; Light – использует светлую тему; Dark – темную.
  • Общие изменения:
    • Ассерты перенесены в скоп TfgAssert.

Полное описание и ссылки на скачивание.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

К сожалению, времени на всё запланированное банально не хватает. Смена хостера, обновление движка Delphifeeds и многое другое. Тем не менее, начал писать подробный мануал по созданию полноценного мобильного приложения и даже собрал команду болельщиков в этом начинании. Но быстро сказка сказывается, да не быстро дело делается. А пока решил сделать несколько постов в новую рубрику. Как следует из названия, здесь будут публиковаться “зарубки на память”, небольшие лайфхаки и прочие материалы, которые назвать оригинальными можно с натяжкой, но под рукой иметь полезно. Для начала маленький лайфхак для начинающих разработчиков.

Представьте, что в режиме проектирования вам нужно клонировать на форме какой-то сложный объект, например, DataSet. Казалось бы всё просто. Выделяете объект и копируете его в буфер обмена (Ctrl+C). Затем вставляете его на форму и переименовываете новый объект. Но здесь есть один не совсем приятный момент. Если мы откроем редактор полей, то обнаружим, что поля вновь созданного объекта не имеют осмысленных названий, а называются примерно так, как показано на рисунке.

Кроме типа поля из названия смысловой информации мы не получим. Конечно, в данном случае есть простое решение. Удаляем все поля, затем копируем все поля из исходного DataSet’а и вставляем в новый DataSet. Все поля приобретут осмысленные названия. которые мы сможем использовать в коде.

Но что делать, если копирование полей не поддерживается, как, например в TdxMemData от DevExpress? Конечно, можно создать заново все поля вручную, но значительно проще отредактировать код формы. Для этого я использую Notepad++. В принципе подойдёт любой редактор, с поддержкой глобальной замены текста. Всё просто. В Delphi IDE мы выбираем текстовое представление формы. Копируем и переносим код интересующего нас объекта вместе с вложенными объектами в редактор и производим замену по шаблону. После этого вставляем код нового объекта в исходный код формы. Что бы не возиться с описаниями объекта в pas-модуле, просто вырежьте и снова вставьте его на форму.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

В связи с переездом в работе Delphifeeds.ru и Delphi2010.ru будут перебои. Delphifeeds.ru планирую перевести на новый дижок.

Старые записи выложу в виде архива (либо просто БД, либо удосужусь написать приложение).


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Продукты DevArt

Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика