31 декабря 2020

Итоги 2020-го года

 13: Я самое зловещее число!
666: Нет! Я!
2020: Здра-а-асьте...

    2020-й год подошел к концу. Пандемия COVID-19 сделала его необычным, тяжелым и по своему интересным. Мне кажется, что этот год пошел компании Embarcadero на пользу. Она наконец вспомнила о умирающем сообществе разработчиков на Delphi и C++Builder: уделила большое внимание повышению качества и быстродействия RAD Studio, обновила платформу блогов компании и начала усиленно наполнять ее статьями, поддержала разработчиков проектов с открытым исходным кодом, провела множество вебинаров и даже онлайн-конференцию.
Happy New Year
    Кратко назову основные, по моему мнению, события уходящего года в мире Delphi:
  1. 25-летие релиза первой версии Borland Delphi;
  2. релиз RAD Studio Sydney 10.4 и 10.4.1;
  3. авторы Delphi отказались от использования ARC;
  4. вылет Delphi из топ-20 рейтинга языков программирования TIOBE Index, падения его на 30-ю позицию и триумфальное возвращение в топ-20 сразу на 18-ю позицию;
  5. проведение онлайн-конференции посвященной Delphi - DelphiCon Worldwide 2020;
  6. начало тестирования бета-версии Delphi, C++Builder и RAD Studio 10.4.2 Hunter;
  7. релиз FastMM 5;
  8. Bold for Delphi стал OpenSource.
    О себе могу сказать. За 2020-й год я: опубликовал в своем блоге 83 сообщения, открыл для себя язык программирования Python и познакомился с двумя интересными фреймворками - uniGUI и DelphiMVCFramework.
    Поздравляю тех, кто дочитал или долистал досюда, с окончанием бета-версии 2021-го года!

23 декабря 2020

Работа с ресурсами приложения

    Ресурсы приложения Windows – это данные, которые встроены внутрь EXE, DLL, CPL и MUI файлов. Общеизвестным примером такого ресурса является иконка приложения. Windows API предопределяет большое количество типов ресурсов приложений. Кроме них приложения могут определять свои собственные типы ресурсов. Хотя, как я понимаю, они все будут равнозначны RCDATA. Давайте добавим приложению как ресурсы логотип и пользовательское соглашение, а при его старте загрузим их на форму.
Form with resources

18 декабря 2020

December Apple Platforms Patch for RAD Studio 10.4.1 версия от 18.12.2020

    Компания Embarcadero выложила обновленную версию December Apple Platforms Patch for RAD Studio 10.4.1, о котором я писал вчера. В прошлый раз авторы патча забыли заменить в архиве ноябрьский PAServer для macOS на декабрьскую версию. Обратите внимание, что патч обновляет PAServer в каталоге RAD Studio (путь по умолчанию C:\Program Files (x86)\Embarcadero\Studio\21.0\PAServer) и вам нужно вручную скопировать обновленную версию PAServer на свои Mac'и.

Windows 10. Обновление драйвера до версии 1968 года

    Сегодня случайно заглянул в раздел "Необязательные обновления". Windows 10 Pro версии 20H2 (сборка 19042.685) предложила обновить драйвер INTEL до версии от 18 июля 1968.
Windows 10 - Back to the future - INTEL system driver update to 1968

17 декабря 2020

Обновленная версия Apple Platforms Patch for RAD Studio 10.4.1

    Компания Embarcadero выложила обновленную версию вышедшего в конце ноября Apple Platforms Patch for RAD Studio 10.4.1. Эта декабрьская версия патча является кумулятивной, т.е. включает в себя содержимое предыдущей версии, поэтому при установке патчей на релизную версию RAD Studio, Delphi или C++Builder ноябрьский Apple Platforms Patch устанавливать не нужно.

15 декабря 2020

Delphi 10.4.2. Новые возможности IDE и новый VCL контрол TControlList

    Компания Embarcadero анонсировала добавление в Delphi 10.4.2 новых Native Windows VCL контролов. Один из них TControlList - оптимизированный виртуальный listview, который позволит отображать большое количество элементов с гибким сочетанием текста и графики. Он будет похож на DBCtrlGrid, но не будет использовать DataSource и будет поддерживать LiveBindings.
Delphi 10.4.2 and TControlList

14 декабря 2020

Clever Internet Suite. Передача файлов по SFTP

    SFTP (SSH File Transfer Protocol) - протокол прикладного уровня, предназначенный для выполнения различных операций с файлами через безопасное соединение. В отличие от FTP, он шифрует команды и данные, предотвращая открытую передачу конфиденциальной информации по сети. Давайте посмотрим, как из программы на Delphi загрузить файл на SFTP-сервер и скачать его.

09 декабря 2020

Delphi, C++Builder и RAD Studio 10.4.2 Beta

    Компания Embarcadero объявила о подготовке публичного тестирования бета-версии Delphi, C++Builder и RAD Studio 10.4.2, которая носит кодовое название "Hunter".

DelphiMVCFramework. Собственный обработчик ошибок

    Осенью я написал на Delphi небольшой REST-сервис для обмена данными с информационной системой другой компании. По регламенту информационного взаимодействия ответ на HTTP-запрос с ошибкой должен быть в формате JSON:
{
  "error_code": код ошибки,
  "error_name": "текст ошибки"
}

04 декабря 2020

NGINX. Фиксим "connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream"

    Несколько недель тому назад я заметил, что у одного из наших заказчиков NGINX спамит в error.log ошибки начинающиеся с "connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream...":
2020/11/20 19:47:24 [error] 8560#14660: *1247 connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream, client: 111.111.111.111, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "https://XYZ.XYZ.XYZ.XYZ:3000/favicon.ico", host: "domain", referrer: "https://domain/"
2020/11/20 19:47:59 [error] 8560#14660: *1247 connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream, client: 111.111.111.111, server: , request: "GET /ru/search?cs=N4I...
где XYZ.XYZ.XYZ.XYZ – это IP адрес их сайта, а domain – его доменное имя.

25 ноября 2020

Apple Platforms Patch для RAD Studio 10.4.1

    Компания Embarcadero выпустила второе обновление для RAD Studio 10.4.1 Sydney. Это обновление устраняет несколько проблем, связанных с поддержкой XCode 12, iOS 14 и macOS Big Sur.

23 ноября 2020

Использование переменных среды в FireDAC

    Environment variables (переменные среды или переменные окружения) появились в 7-й версии Unix в 1979 году и с тех пор используются всеми операционными системами для хранения некоторых своих настроек. Например, всем пользователям Windows известен такой параметр как "PATH". Некоторые программы, чтобы указать путь, по которому нужно их искать, создают собственные переменные среды. Библиотека для работы с базами данных FireDAC позволяет программисту использовать переменные для указания пути к нужным файлам.

18 ноября 2020

Второй день DelphiCon Worldwide 2020

    17 ноября началась DelphiCon Worldwide 2020 - официальная онлайн-конференция посвященная Embarcadero Delphi. Для меня важнейшим результатом первого дня конференции была презентация Embarcadero RAD Studio, Delphi и C++Builder roadmap на 2020/2021, который обещали показать еще июле.
DelphiCon Worldwide 2020

17 ноября 2020

Embarcadero RAD Studio, Delphi и C++Builder roadmap на 2020/2021

    На DelphiCon Worldwide 2020 Марко Канту обнародовал Embarcadero RAD Studio, Delphi и C++Builder roadmap на 2020/2021 годы. Согласно новой дорожной карте, в этом году больше релизов RAD Studio не будет. Версии RAD Studio 10.4.2 и 10.5 запланированы на 2021-й год.

DelphiCon Worldwide 2020

    Сегодня, 17 ноября, стартует DelphiCon Worldwide 2020 - официальная онлайн-конференция посвященная Embarcadero Delphi.
DelphiCon Worldwide 2020

12 ноября 2020

Что делать с "W1000 Symbol 'xyz' is deprecated"?

    Иногда при компиляции старого проекта мы видим предупреждение компилятора "W1000 Symbol 'xyz' is deprecated: 'Use NewXyz'". Что это значит, и как с этим бороться?

09 ноября 2020

Delphi Compiler and Code Completion patch для RAD Studio 10.4.1

    Компания Embarcadero выпустила первое обновление для RAD Studio 10.4.1 Sydney. Оно улучшает работу компилятора Delphi и Delphi LSP-сервера.

04 ноября 2020

TIOBE Index: Трон под C зашатался?

    Сегодня опубликован ноябрьский выпуск TIOBE Index. Сразу скажу, что в это раз Python и Delphi изменили ТОП-20 рейтинга. И если Python поднялся всего на одну позицию, то Delphi сразу на 4!

03 ноября 2020

TIOBE Index: Delphi отвоевывает позиции

    Оказалось, что я зря пропустил октябрьский выпуск TIOBE Index. После нескольких месяцев падения рейтинга популярности языка программирования Delphi, он отвоевал сразу несколько позиций и вернулся на уровень апреля 2020-го года.

30 октября 2020

Без бэкапа по жизни

    Накануне первоапрельского праздника дураков все прогрессивное человечество празднует Международный день бэкапа (World Backup Day). Праздник родился в 2011-м году из одной ветки на Reddit. "Но сегодня не канун 31-го марта", скажете вы. А я скажу, что "дуракам закон не писан" и расскажу о своей прошедшей неделе.

23 октября 2020

Просмотр элементов TDictionary и TObjectDictionary

 - Здесь вместо TStringList.AddObject было бы лучше использовать TObjectDictionary.
 - Не могу. Мне надо получить список всех объектов, а у TDictionary нельзя обратиться к его элементу по индексу...

    С выпуском Delphi 2009 язык программирования Delphi получил новый элемент языка – дженерики (generics). Дженерики позволяют описать класс, у которого типы обрабатываемых данных задаются в качестве параметров при объявлении экземпляра класса. Поэтому такие классы могут называть параметризованными типами. Delphi хранит свой набор дженериков в модуле System.Generics.Collections. Среди них есть TDictionary – это набор пар "ключ-значение", которые могут быть любых типов. В отличии от привычного TStringList, у TDictionary нет свойств Strings, Objects, Names, KeyNames и ValueFromIndex к которым можно получить доступ по индексу. Но это не значит, что нельзя получить список его ключей и значений.

08 октября 2020

Табличные переменные в динамическом SQL

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

01 октября 2020

Варианты подключения к Oracle в UniDAC

    Лет 20-25 тому назад каждая программа для работы с базами данных написанная на Delphi таскала за собой десятки мегабайт Borland Database Engine (BDE). Программисты и администраторы, кроме установки и настройки клиентского программного обеспечения СУБД, были вынуждены создавать и настраивать алиасы BDE. Их жизнь упростилась, когда стали появляться библиотеки, работающие с базами данных через API их клиентского программного обеспечения. Сегодня я хочу рассказать о различных вариантах подключения к серверу базы данных Oracle на примере одной из подобных библиотек - Universal Data Access Components (Devart UniDAC).

23 сентября 2020

Ходячие мертвецы. Bold for Delphi теперь Open Source

    В конце 20-го века стал набирать популярность модельно-ориентированный подход к разработке программного обеспечения. Концепция Мodel Driven Architecture (MDA) разрабатывается консорциумом Object Management Group (OMG). Среди частников консорциума OMG была шведская компания BoldSoft MDE Aktiebolag, которая одна из первых, в 1999-м году выпустила свою платформу реализующую MDA - Bold for Delphi.

11 сентября 2020

В караоке-бар требуется официант со знанием Borland Delphi

    В октябре 2019 в Минске была опубликована вакансия уборщика офисных помещений, которому требовались знания BPWin и Borland Delphi. Теперь караоке-бар в Солигорске ищет официанта со знанием Borland Delphi. Обязательно ОЧЕНЬ ВЫСОКИЕ профессиональные навыки!
Не указано, является ли этот бар резидентом Парка высоких технологий...

04 сентября 2020

Delphi 10.4.1. Обходим баг в "package AUTO libsuffix"

    Одним из ключевых улучшений в RAD Studio версии 10.4.1, заявленных в Release Notes RADStudio 10.4.1, является "Package AUTO libsuffix". Это директива компилятора, которая позволяет при компиляции пакета автоматически подставлять в имя bpl-файла номер релиза RAD Studio.

02 сентября 2020

Выпущена RAD Studio 10.4.1

    Сегодня, 22 сентября 2020 года компания Embarcadero выпустила Delphi, C++Builder и RAD Studio 10.4 Sydney - Release 1. Эта версия не добавляет новых функциональных возможностей, а уделяет большое внимание повышению качества.

Delphi 10.4 and C++Builder 10.4 Update 1 на подходе

    В июле Дариан Миллер предположил, что Update 1 для RAD Studio 10.4 выйдет примерно в первую неделю сентября. Похоже, что он был прав. В конце августа компания Embarcadero подготовила инсталлятор RAD Studio 10.4 Update 1.
Delphi 10.4 and C++Builder 10.4 Update 1

25 августа 2020

Как снять защиту листа Excel не зная пароль?

    Предположим, что вам дали файл в формате MS Excel. Вы хотите его изменить, но автор файла защитил ячейки листа от редактирования и забыл сообщить пароль.
Можно попытаться узнать пароль, а можно снять защиту с помощью любого архиватора, который умеет работать с архивами в формате ZIP.

12 августа 2020

INSERT в таблицу без указания значений полей

    Все знают, что в команде INSERT имена полей таблицы не являются обязательными параметрами. Сразу скажу, что я никогда не использую подобный INSERT только с указанием значений полей, и вам не рекомендую. А вы задумывались, что список значений полей может тоже не являться обязательной частью этой команды?

05 августа 2020

Парсинг SQL запросов

    Весной передо мной поставили задачу оптимизации большой старой базы данных. Собранная с помощью sp_BlitzCache статистика содержала тысячи однотипных запросов, и для одного из графиков нагрузки потребовалось объединить их количественную статистику. Для этого однотипные запросы нужно было "нормализовать" - заменить конкретные значения на символ параметра (например, "LIKE 'xzy%'" заменить на "LIKE '?%'" или "CONVERT(DATETIME,'01/01/2020 00:00',101)" заменить на "CONVERT(DATETIME,?,101)"...), убрать переводы строк, убрать лишние пробелы/табы... То есть моя задача - разобрать запрос на токены, почистить лишнее и собрать его снова.

31 июля 2020

Google Play попрощается с программами на C++Builder?

 "Обещанного три года ждут, а на четвертый отказывают"
 © Народная пословица

    1 августа 2021 года все приложения Google Play, которые содержат нативный код, должны быть обновлены до 64-разрядных версий. В настоящее время C++Builder 10.4 поддерживает 64-битную компиляцию под Windows (VCL и FMX) и iOS (FMX). Сегодня компания Embarcadero подтвердила, что не предоставит поддержку 64-разрядной версии Android ни к 1 августа 2020 года, ни в запланированной на 2020 год версии 10.4.1. Так же на 2020 год не планируется и поддержка 64-битной версии macOS.

28 июля 2020

Релиз Patch 3 для RAD Studio 10.4

    Компания Embarcadero выпустила 3-е обновление для RAD Studio, Delphi и C++Builder 10.4 Sydney. Этот патч устраняет ряд проблем касающихся VCL Grid, отладчика C++Builder под Win64 и обработки исключений C++Builder для Android. Более подробно о его содержимом я писал вчера. Первая информация о 3-м обновлении для RAD Studio 10.4 появилась на прошлой неделе. А сегодня его подтвердили официально.

27 июля 2020

Обновился Patch 3 для RAD Studio 10.4

    В субботу я писал, что для скачивания стало доступно 3-е обновление для RAD Studio 10.4 Sydney. Я поторопился. Сегодня разработчики выложили его новую версию. Новая версия выросла в размере почти на 35 МБ и весит уже 114 МБ.

25 июля 2020

22 июля 2020

Бета-тестирование RAD Studio 10.4.1

    Компания Embarcadero начала второй этап бета-тестирования RAD Studio версии 10.4.1. Участники программы Update Subscription начали получать приглашения присоединиться к ее тестированию.

21 июля 2020

dbForge Studio. Обходим ошибку "Index was outside the bounds of the array"

    Для работы с базами данных SQL Server я использую dbForge Studio for SQL Server. Главное ее преимущество над конкурентами - это наличие черного скина. Шутка. Я выбрал dbForge Studio, так как она по функциональным возможностям и удобству работы лучше других IDE для SQL Server. Одной из ее функций, которыми я пользуюсь, является "Data Generator" - генератор тестовых данных. Вкратце, хочу отметить, что "Data Generator" из dbForge Studio намного более мощный и гибкий, чем многие специализированные утилиты для генерации тестовых данных. Сегодня случилось страшное - мой проект по генерации тестовых данных сломался.

17 июля 2020

Доступен Patch 2 для RAD Studio 10.4

    Компания Embarcadero выпустила 2-е обновление для RAD Studio, Delphi и C++Builder 10.4 Sydney. Этот патч устраняет большое количество проблем, которые касаются компилятора Delphi, IDE RAD Studio, нового Code Insight на базе LSP, C++Builder для Android и отладчика. Патч довольно большой (почти 190 МБ) и устраняет более 50 багов с Embarcadero Quality Portal.

16 июля 2020

Python. Вызов функции DLL со строковыми параметрами

    Вот я добрался и до Python. Так сказать – первые пробы пера. Но куда я в Python без Delphi? Сегодня столкнулся с тем, что в Python нужно было вызвать функцию из DLL, которая была написана много лет тому назад на Delphi.

12 июля 2020

TIOBE Index: Delphi опять пробил дно

    По оценке TIOBE Index рейтинг популярности языка программирования Delphi в 2020-м году стал сильно падать. В апреле Delphi покинул топ-20 и опустился на 22-ю позицию. Поводом послужило то, что Delphi и Object Pascal имеют отдельные страницы на Википедии, а значит должны учитываться в рейтинге по отдельности. В мае, по причине исключения Delphi Web Script из рейтинга Delphi, он опустился на 23-ю позицию.

09 июля 2020

Уменьшение размера PDF файла

    Часто сгенерированный программой файл формата PDF имеет размер больше, чем нам хотелось бы. Возникает законное желание как-нибудь его уменьшить. Документ формата PDF представляет собой контейнер, который состоит из различных элементов: текст, изображения, шрифты и так далее. Все эти элементы можно сжать, а значит размер PDF файла можно уменьшить.

03 июля 2020

Байки из жизни. Ложь - это часть жизни программиста

    Сегодня закончив очередную статью для своего блога, я перед публикацией решил отвлечься, чтобы потом прочитать ее немного посвежевшей головой. Попивая кофе и листая новости, я увидел статью "6 Things Programmers Know Are Bad But Still Do Anyway". Читая абзац о глотании ошибок втихаря, я вспомнил случай, который произошел на моей предыдущей работе. Расскажу лучше сегодня о нем. Ведь сегодня пятница, а значит статья об оптимизации размера PDF-файла подождет.

25 июня 2020

RAD Studio 10.4. Новый Code Insight

    Недавно я стал пробовать собирать свои старые проекты на Delphi 10.4. Пока впечатления от новой версии положительные. Я еще не столкнулся с горой ошибок, которыми пугали в "интернетах", а сама IDE грузится и работает заметно быстрее Delphi 10.3. Еще перед релизом RAD Studio 10.4 Sydney нам много и восхищенно рассказывали о новой версии Code Insight. Оценил ее и я.

17 июня 2020

Изменение разрешения изображения. Ускорение

    Приведенный в статье "Изменение разрешения изображения" алгоритм изменения разрешения изображения рабочий, только, как оказалось, очень медленный. Я сразу подумал, что это из-за использования мной режима масштабирования изображения HALFTONE. Но, даже при использовании режима COLORONCOLOR, моя процедура в 3-4 раза медленнее стандартного метода Canvas.StretchDraw!

10 июня 2020

Итоги вебинара "Новая версия Embarcadero RAD Studio 10.4 Sydney"

    Сегодня, 10 июня 2020, компания Embarcadero для русскоязычных пользователей RAD Studio провела вебинар "Новая версия Embarcadero RAD Studio 10.4 Sydney". Докладчиком был менеджер по продуктам Embarcadero Андрей Совцов. Он рассказал и показал основные новшества RAD Studio 10.4. Для меня более интересна была часть, где были даны ответы на вопросы слушателей. Хочу поделиться ответами на мои и некоторые другие вопросы.

09 июня 2020

Изменение разрешения изображения

    Предположим, что у вас возникла нужда изменить разрешение изображения. Например, чтобы сделать его миниатюру (thumbnail) для предварительного просмотра. Для этого можно воспользоваться какой-нибудь библиотекой для работы с графикой. Можно реализовать алгоритм самому. Но можно обойтись и подручными средствами, то есть функциями Delphi и WinAPI.

30 мая 2020

Ошибка установки патча RAD Studio 10.4 через GetIt Package Manager

    RAD Studio 10.4 получила новую улучшенную версию менеджера установки дополнительных пакетов GetIt Package Manager. Одна из его новых функций – это возможность установки патчей. В день релиза RAD Studio 10.4 Sydney компания Embarcadero предоставила своим пользователям возможность протестировать работу этого механизма выпустив первое обновление RAD Studio 10.4 Sydney, в которое включила файлы, которые разработчики забыли положить в инсталлятор. Многие пользователи, которые воспользовались механизмом установки обновлений RAD Studio через GetIt Package Manager, столкнулись с ошибкой на подобии этой:

29 мая 2020

Встраиваем Microsoft Edge

    В RAD Studio 10.4 разработчики добавили новый контрол - TEdgeBrowser (можете не кликать, т.к. документация по TEdgeBrowser еще не готова), который предназначен для встраивания в приложение браузера Microsoft Edge на основе Chromium. Этот контрол и альтернатива, и дополнение старого контрола TWebBrowser. Давайте посмотрим, как им пользоваться.

28 мая 2020

Судьба Delphi и C++Builder 10.4 Community Edition

    Несколько часов тому назад закончился вебинар "See What's Coming in RAD Studio 10.4" от компании Embarcadero. Почти все озвученное на нем уже известно из материалов опубликованных за последние две недели. В результате, главное впечатление на меня произвела заставка в 10 минутном перерыве, часть которой гласила "выпить чашечку кофе или чая, поговорить с детьми, покормить кота... ". Один из вопросов от слушателей был "Когда будет доступна Delphi 10.4 Community Edition?".

27 мая 2020

RAD Studio 10.4 Patch 1

    21 ноября 2019 года компания Embarcadero выпустила RAD Studio 10.3.3 Rio. В этот же день для нее было выпущено первое обновление. Сегодня, спустя несколько часов после релиза RAD Studio 10.4 Sydney, для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.4 и All-Access стал доступен "RAD Studio 10.4 Patch 1".

26 мая 2020

Релиз RAD Studio 10.4 Sydney

    То, о чем мы говорили всю весну свершилось... Сегодня, 26 мая 2020 года, компания Embarcadero официально выпустила Delphi, C++Builder и RAD Studio 10.4 Sydney. Кроме крупных новшеств, которые были анонсированы ранее, этот релиз включает в себя более чем 1000 улучшений качества и производительности. В том числе исправление более 700 багрепортов, о которых сообщили клиенты через Quality Portal.

Полный контроль над заголовком окна программы в Delphi 10.4

    Одно из интересных новшеств Delphi 10.4 Sydney – это возможность настраивать заголовок окон программы. Теперь легко можно изменить высоту заголовка, перемесить название окна в центр заголовка, а, что еще полезнее – разместить в заголовке окна свои VCL-контролы, как это делает сама Delphi или другие программы (например, Office, Explorer, Google Chrome...).

25 мая 2020

ISO-образ DVD с RAD Studio 10.4 Sydney

    В ноябре 2019 года, за несколько дней до официального релиза Embarcadero RAD Studio 10.3.3 Rio, в сети появилась ссылка на ISO-образ Embarcadero RAD Studio 10.3.3 Rio и генератор лицензии к нему. Похоже, что история повторяется. Сегодня, 25 мая 2020 года, на варезных сайтах уже распространяется ссылка на ISO-образ DVD с RAD Studio 10.4 build 37889.9797.

22 мая 2020

RAD Studio 10.4. Оптимизация Delphi Run-Time Library

    Две среды подряд, я делал обзор доступной информации о предстоящем релизе RAD Studio 10.4 Sydney. Сегодня я вынужден нарушить свой план выпускать подобный обзор раз в неделю, т.к. есть новости, которыми мне не терпится поделиться. Они касаются оптимизации Delphi Run-Time Library и сроков релиза RAD Studio 10.4 Sydney.

20 мая 2020

RAD Studio 10.4. Новости за неделю

    В прошлую среду я сделал свой первый обзор доступной информации о предстоящем релизе RAD Studio 10.4 Sydney. Сегодня я подготовил его продолжение - краткий обзор информации о RAD Studio 10.4 Sydney, которая поступила за прошедшую неделю. Сразу скажу, что хорошая новость ждет только поклонников C++ Builder. А для разработчиков на Delphi прошлый мой обзор новостей был гораздо интереснее.

17 мая 2020

Доступ к private членам класса

    Неделю тому назад я начал писать небольшую заметку, где в коде был доступ к protected методу класса. В результате два предложения о нем вылились в отдельную статью "Доступ к protected членам класса", комментарии к которой натолкнули меня на мысль продолжить тему. Сегодня я рассмотрю несколько способов доступа к private членам класса.

13 мая 2020

RAD Studio 10.4. Что известно на сегодня

    В конце февраля 2020-го года Компания Embarcadero объявила о выпуске под кодовым названием "Denali" бета-версии RAD Studio 10.4. Бета программа уже закрыта и теперь речь уже идет о скором релизе. Недавно Embarcadero начала рассылать "pre-release sales offer" RAD Studio 10.4 Sydney. Да, путешествие по городам мира продолжается – релиз RAD Studio 10.4 получил кодовое название "Sydney". Давайте посмотрим, что, на текущий момент известно о предстоящем релизе.

10 мая 2020

Доступ к protected членам класса

 Я когда-то читал книгу еврейского писателя Шолом-Алейхема... У него там была занятная строка: "Если нельзя, но очень хочется, то можно"
 © Штирлиц "Семнадцать мгновений весны"

    Все члены класса обладают одним важным атрибутом – область видимости. Область видимости определяется специальными ключевыми словами private, protected, public, published и automated, которые называются модификаторами доступа. Сегодня я хочу сказать пару слов о модификаторе доступа protected. Члены класса, которые защищены им видны в любом классе являющимся его наследником и в том модуле, где описан класс. Эту область видимости можно сузить, если к модификатору "protected" добавить слово "strict", тогда эти члены класса увидят только его наследники.
    Зачем это надо? Например, за protected, а лучше за strict protected можно скрыть абстрактный метод. Это избавит программиста, который будет использовать класс, от желания вызвать этот метод. Но иногда авторы классов делают обычные методы protected. Самое печальное, что таким образом они скрывают много полезного. Зачем? Разумного объяснения этому я пока не слышал. Некоторые говорят, что причина в реализации одного из основных принципов ООП – инкапсуляции. Но инкапсуляция подразумевает под собой скрытие членов класса от посторонних глаз. А о какой инкапсуляции может вестись речь, если protected члены класса можно легко увидеть и использовать?

05 мая 2020

TIOBE Index снова понизил рейтинг Delphi

    Рейтинг популярности языков программирования TIOBE Index продолжает свой креатив в борьбе против Delphi. Я думал, что его автор успокоится после того, как в апрельском выпуске рейтинга по выдуманной причине исключил Delphi из топ-20. Но в мае была найдена новая причина, чтобы еще понизить рейтинг Delphi.

03 мая 2020

Первые тесты производительности FastMM 5

    По информации автора менеджер памяти FastMM производительность приложений, использующих FastMM 5-й версии выше, чем у использующих FastMM версии 4.992 в однопоточных тестах на 15%, а в многопоточных тестах на 30%. Так ли это? Давайте проверим и сравним скорость работы FastMM 4, который используется в Delphi 10.3, и FastMM 5.0.

01 мая 2020

Релиз FastMM 5

    Начиная с Delphi 2006 менеджер памяти Borland был заменен на FastMM4. С тех пор он используют в IDE RAD Studio и для приложений скомпилированных под Win32/Win64. Несколько дней тому назад автор FastMM Пьер ле Риш (Pierre le Riche) выложил на GitHub FastMM5.
    FastMM 5 полностью переписан с нуля. Новая версия одновременно сохранила сильные стороны версии 4.992 и устранила ее недостатки:

30 апреля 2020

TIOBE Index вышвырнул Delphi из топ-20

    Рейтинг популярности языков программирования TIOBE Index всегда предвзято относился к Delphi. Мартовский выпуск TIOBE Index 2020 года вышел под заголовком "Delphi вот-вот выпадет из топ-20 индекса TIOBE". И авторы рейтинга сдержали свое слово – в апреле Delphi покинул их топ-20. Но произошло это не из-за падения рейтинга Delphi, а из-за того, что Delphi и Object Pascal имеют отдельные страницы на Википедии. По мнению TIOBE - это повод разделить Delphi и Object Pascal на разные записи в индексе. В результате такой махинации Delphi теперь находится на 22-й позиции, а Object Pascal на 73-й.
    Но главная новость, это то, что в TIOBE Index топ-20 апреля 2020 года вошел язык программирования для детей Scratch. С таким же успехом в этот рейтинг можно было бы включить Minecraft.

28 апреля 2020

Варианты добавления favicon в uniGUI

    Favicon (сокр. от англ. FAVorite ICON – "значок для избранного") – значок веб-сайта или веб-страницы. Отображается браузером во вкладке перед названием страницы, а также в качестве картинки рядом с закладкой, во вкладках и в других элементах интерфейса. © Wikipedia

    В марте 1999 года компания Microsoft выпустила браузер Internet Explorer 5, который первым стал поддерживать "значки для избранного " (иконки сайта). С тех пор эта крошечная картинка есть у каждого сайта. Запустив свое первое веб-приложение, созданное на Delphi с использованием библиотеки uniGUI, я увидел в закладке браузера иконку Delphi.


Обычно для добавления сайту иконки достаточно поместить ее в корневой каталог сайта под названием "favicon.ico ". Но у сайта на UniGUI нет корневого каталога. А положить favicon.ico в каталог с модулем ничего не дает. Исправить эту маленькую неприятность можно различными способами.

15 апреля 2020

RAD Studio 10.4 beta. Первые весточка

 Уж полночь близится, а Германа все нет.
Я знаю, он придет, рассеет подозренье.
 "Пиковая дама" © Александр Пушкин

    В последние дни февраля 2020-го года компания Embarcadero объявила о запланированном на март 2020-го года выпуске бета-версии RAD Studio 10.4. Прошел март. Тишина. Прошла половина апреля. Тишина. Я уже решил, что обещанная бета версия RAD Studio 10.4 застряла в где-то в горах центральной части Аляски. О причине задержки можно только гадать. Толи программисты Embarcadero как обычно никуда не торопятся пока добавляют новые баги, т.е. фичи, толи Embarcadero последовала примеру других компаний и из-за набирающей обороты пандемии коронавируса COVID-19 перенесла сроки выпуска на неопределенное время. Но вот в почту легло письмо "Delphi and C++Builder 10.4 Beta Invitation" от Embarcadero Product Team.

07 апреля 2020

PostgreSQL и ошибка "столбец pd.adsrc не существует"

    Меня все больше удивляют авторы СУБД PostgreSQL. На моих тестовых серверах и у клиентов установлена ее 11-я версия. Обычно я стараюсь себе на компьютер устанавливать последние версии программного обеспечения. Так же было и с PostgreSQL - когда возникла необходимость ее установить локально, я установил 12-ю версию. Залил дамп базы, запустил свою утилиту и получил ошибку "column pd.adsrc does not exist". Я сразу подумал, что при импорте дампа возникла ошибка и загрузил его снова. Но ошибка повторилась. Установил PostgreSQL на другой компьютер и получил "столбец pd.adsrc не существует".

31 марта 2020

Туманное будущее C++ Builder

 "Будущее туманно, а конец - всегда близок"
 © Джим Моррисон

    Компания Embarcadero часто подвергается критике, что C++ Builder, по сравнению с Delphi, является для нее пасынком. Большинство их клиентов использует Delphi, поэтому логично, что Delphi является приоритетным направлением в разработке RAD Studio. Тем не менее, они постоянно обещают не забывать о C++ Builder.

29 марта 2020

Создание выпадающего списка в ячейке электронной таблицы

    Современные программы для создания электронных таблиц имеют много интересных функций, которые делают работу пользователя с данными более комфортной. Одна из таких функций "Проверка данных" ("Data Validation") позволяет контролировать корректность ввода данных в ячейке электронной таблицы. Контроль достигается за счет ограничения типа данных или значений, которые можно ввести в ячейку. Одним из часто используемых применений механизма проверки данных является создание выпадающих списков. Давайте посмотрим, как создать выпадающий список в ячейке электронной таблицы "руками" в Google Таблицы и Microsoft Excel. А также создадим его из программы.

18 марта 2020

Denali. Предстоящей версии RAD Studio посвящается

    Сиэтл, Берлин, Токио, Рио... Это не маршрут очередного прощальный тура Scorpions по городам и селам нашей планеты, а кодовые названия релизов последних версий Embarcadero RAD Studio. 28 февраля компания Embarcadero объявила о подготовке выпуска бета-версии RAD Studio 10.4. Она выйдет под кодовым названием "Denali". Если названия Seattle, Berlin, Tokyo, Rio были для меня понятные, то название Denali поставило меня в тупик.

09 марта 2020

TIOBE Index: Delphi вот-вот выпадет из топ-20

 "Цифры в Tiobe немного похожи на отображение мировой популяции диких кабанов, основываясь исключительно на том, сколько мяса кабана продается в супермаркетах"
 © Jon L. Aasenden

    Меня всегда смущал рейтинг популярности языков программирования TIOBE Index. И не только из-за их явно предвзятого отношения к наследникам языка Pascal, но и из-за их рейтингов других языков программирования. Например, как "голые" C и C++ могут быть впереди планеты всей и обгонять тот же C#?

04 марта 2020

Избавляемся от "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом"

    Процесс не может получить доступ к файлу, так как этот файл занят другим процессом... Но это не точно... Как показала практика, для программы на Delphi это действительно не точно.
    При открытии файла в режиме "только для чтения" в параметре определяющем режим доступа к файлу обычно передают комбинацию "fmOpenRead or fmShareDenyNone". Но оказалось, что это избавляет только от части ошибок "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом" или "The process cannot access the file because it is being used by another process".

28 февраля 2020

RAD Studio 10.4 beta. Что день грядущий нам готовит?

    Компания Embarcadero объявила о подготовке выпуска бета-версии RAD Studio 10.4. Ее выпуск под кодовым названием "Denali" запланирован на март 2020-го года. Из незакрытых NDA новшеств RAD Studio 10.4 называются:

Delphi
  • Language Server Protocol под Delphi
  • Улучшения языка: Managed Records
  • Унифицированное управление памятью для всех платформ

Антивирус Касперского против Delphi

    Недавно мое руководство осчастливило нас защитой от "Лаборатории Касперского". Пришел админ и поставил всем Kaspersky Endpoint Security. На днях безопасность мирового класса у меня дала сбой. В крошечной консольной программке сразу после компиляции в Delphi 10.3.1 эвристический анализ антивируса нашел троян "HEUR:Trojan-Banker.Win32.Danabot.gen".
При этом если проект собрать компилятором под Win-64, то он успешно запускается. Так же, как и если 32-х битную версию собрать на Delphi 10.3.2 или Delphi 10.3.3.
    Я сталкивался с таким раньше, когда программа по HTTP скачивала страницу из интернета, но эта всего лишь читает список файлов каталога (исходный текст моего "трояна" является примером к моей следующей статье). Так, что время идет, название антивируса меняется, а алгоритмы касперсого продолжают глючить :-)

26 февраля 2020

Delphi 10.3.3 Open Array Patch

    25 февраля 2020 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила очередной хотфикс для RAD Studio 10.3.3 Rio. Он исправляет баг RSP-23939: в программе скомпилированной на Delphi под Win64 вызов унаследованной функции (метода) с параметром типа open array может привести к access violation.

Подробнее о Delphi 10.3.3 Open Array Patch.

RAD Studio 10.3.3 Midas.dll Patch

    25 февраля 2020 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выложила новый билд midas.dll. Midas.dll была скомпилирована по-новому, так как ее "затронул" их предыдущий хотфикс от 29 января 2020 года (C++Builder 10.3.3 Threading and TLS Patch).

Подробнее о RAD Studio 10.3.3 Midas.dll Patch.

19 февраля 2020

Обмен сообщениями между базой данных и программой

    Многие современные СУБД представляют возможности для обмена сообщениями между процессами. Чаще всего это уведомления о каких-то событиях в базе данных. Например, об изменении данных или об окончании выполнения процедуры. Принцип реализации этого механизма у всех СУБД одинаковый: один процесс (приложение) подписывается на событие от базы данных и ожидает его, а второй процесс отправляет уведомление об этом событии. В Oracle это позволяют делать процедуры пакетов DBMS_ALERT и DBMS_PIPE, в PostgreSQL команды NOTIFY и LISTEN, в InterBase/Firebird команды POST_EVENT и EVENT INIT/WAIT...

14 февраля 2020

Delphi 1 Client/Server Install ISO

    14 февраля 2020 года, в рамках празднования двадцатипятилетия первого релиза Borland Delphi (#Delphi25th), компания Embarcadero выложила для бесплатного скачивания архив (75.7 МБ) с оригинальным инсталлятором Delphi 1 Client/Server. Он содержит: инсталляторы Delphi 1 Client/Server, BDE, SQL-линков, ReportSmith 2.5, документацию в PDF-формате и прочие материалы. Для установки вам понадобится копия Windows, которая поддерживает 16-битные приложения.

Подробнее о "Historic Delphi 1 Client/Server Install ISO"...

11 февраля 2020

Взлет и падение. Двадцатипятилетию Delphi посвящается

    25 лет тому назад, 14 февраля 1995 года, компания Borland выпустила новый продукт для быстрой разработки приложений - Borland Delphi. Он был предназначен для разработки 16-разрядных приложений под Microsoft Windows. Delphi стала быстро набирать популярность среди разработчиков, оставляя далеко за собой, существовавшие до этого не один год, системы конкурентов. Наблюдая за этим Gupta SQLWindows, Powersoft PowerBuilder, не говоря уже об убогом Microsoft Visual Basic, "нервно курили в сторонке". Выход Delphi не только вдохнул новую жизнь в язык программирования Pascal, но и вывел разработку программного обеспечения на новый уровень, дав тем самым сильный толчок для развития всех средств разработки программного обеспечения. Год за годом Delphi все больше и больше завоевывала сердца разработчиков по всему миру.

31 января 2020

RAD Server Docker Technical Guide

    30 января 2020 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access (Enterprise Edition и выше) компания Embarcadero выложила техническое руководство по использованию RAD Server совместно с Docker. Это руководство на 50-ти страницах содержит обзор RAD Server, и описание процессов установки контейнеров RAD Studio Docker (paserver, pa-radserver и pa-radserver-ib), настройки базы данных удаленного RAD Server (InterBase), лицензирования контейнеров RAD Server Docker, использования предварительно созданных образов с Docker Hub (скрипты также доступны на GitHub) и многое другое.

Подробнее...

29 января 2020

C++Builder 10.3.3 Threading and TLS Patch

    29 января 2020 года для зарегистрированных пользователей RAD Studio, C++Builder 10.3 и All-Access компания Embarcadero выпустила хотфикс для C++Builder 10.3.3. Этот патч исправляет баг "RSP-27180 64-bit builds crash with threads", который на некоторых машинах может привести к access violation при создание и использование потока (например, std :: thread).

Подробнее о C++Builder 10.3.3 Threading and TLS Patch.

18 января 2020

RAD Studio 10.3.3 iPhone XS and XR Debugging Patch

    17 января 2020 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила седьмой (если не считать патчи локализации) хотфикс для RAD Studio 10.3.3 Rio. Этот патч исправляет баги при отладке приложении на устройствах iOS с использованием процессора A12 (arm64e), включая iPhone XS и XR:
  • RSP-26709 Debugger 'freezes' on iPhone 11 Pro
  • RSP-25732 Can't debug on iOS Device
Проблема в том, что LLDB используемая для отладки на 64-битных приложений наустройствах iOS, не поддерживает этот процессор. Патч представляет собой новую версию Platform Assistant Server (версия 11.2.13.9 от 2020 года) и инструкцию по его установке.

Подробнее о RAD Studio 10.3.3 iPhone XS and XR Debugging Patch.

16 января 2020

Удаление дубликатов строк SQL запросом

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

11 января 2020

RAD Studio 10.3.3 Indy Server SSL Certificate Patch

    10 января 2020 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила первый в этом году и шестой (если не считать патчи локализации) хотфикс для RAD Studio 10.3.3 Rio. На этот раз повезло пользователям библиотеки Indy. Он исправляет баг RSP-27144, при котором WEB-сервера, созданные с помощью библиотеки Indy, под Windows не могут загрузить сертификат SSL.

Подробнее о RAD Studio 10.3.3 Indy Server SSL Certificate Patch.