21 декабря 2019

RAD Studio 10.3.3 Android Services Patch

    20 декабря 2019 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила пятый хотфикс для RAD Studio 10.3.3 Rio. Он исправляет очередной баг под Android:
Проблема, возникает при запуске службы на Android, так как она не может загрузить свою библиотеку. Это касается только приложений, которые упакованы как Android App Bundles. Базовый APK, сгенерированный из AAB, имеет атрибут extractNativeLibs установленный в false. Из-за чего диспетчер пакетов при установке приложения не извлекает библиотеку в файловую систему, а служба Android передает динамическому компоновщику неверный абсолютный путь к библиотеке.

Подробнее: RAD Studio 10.3.3 Android Services Patch.

19 декабря 2019

Кто такой TBufferedFileStream?

    Недавно в модуле System.Classes под описанием класса TFileStream я случайно заметил наследуемый от него класс TBufferedFileStream. Судя по документации, TBufferedFileStream добавляет поддержку буферизации в TFileStream, тем самым оптимизируя небольшие последовательные операции чтения/записи файла. Давайте разберемся, что это за зверь, когда и откуда он появился, и, что он дает?

13 декабря 2019

RAD Studio 10.3.3 Android Debugger Patch

    13 декабря 2019 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила четверый (второй за сегодня) хотфикс для RAD Studio 10.3.3 Rio. Он исправляет более десяти багов отладки приложений под Android (размер архива 20.2 МБ):
  • RSP-23698 - dsymlink приводил к аварийному завершению программы
  • RSP-26704 - отладка 64-битного приложения под Android подвешивает IDE
  • RSP-26824 - в 64-битном проекте под Android не работают точки останова
  • RSP-26774 - невозможно запустить ядро GDB после перехода с отладки 32-битного приложения под Android на 64-бит
  • ряд внутренних проблем: подключения к устройству Android, замедления отлаживаемого приложения при подключенном отладчике, обработки очень больших исходных файлов, переключения потоков в окне "Threads", отображение памяти в окне "CPU", и других...

Подробнее о RAD Studio 10.3.3 Android Debugger Patch.

RAD Studio 10.3.3 IDE и VCL Patch

    13 декабря 2019 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выпустила третий (если не считать патчи локализации для французского, немецкого и японского языков) хотфикс для RAD Studio 10.3.3 Rio. На этот раз это весьма полезное обновление, которое исправляет сразу два бага:
  • RSP-26731 - всплывающее окно авто завершения кода ("code completion") оставляет полосу прокрутки
  • RSP-27035 - использование TActionManager или TPopupActionBar при компиляции выдает ошибку "F2613 Unit 'IDETheme.ActnCtrls' not found""

Подробнее о RAD Studio 10.3.3 IDE and VCL Patch.

12 декабря 2019

О пользе свойства Capacity

    Многие классы, у которых есть список элементов, имеют свойство "Capacity" или его аналог. Можно всю жизнь программировать и не догадываться о его существовании. Но оно есть. Так зачем оно нужно и как его использовать?

06 декабря 2019

Патчи локализации для RAD Studio 10.3.3

    6 декабря 2019 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access компания Embarcadero выложила два патча для решения некоторых проблем локализации:

Второй хотфикс для RAD Studio 10.3.3

    5 декабря 2019 года для зарегистрированных пользователей RAD Studio, Delphi, C++Builder 10.3 и All-Access стал доступен второй небольшой хотфикс для RAD Studio 10.3.3 Rio. Похоже, что в Embarcadero очень спешили с релизом RAD Studio 10.3.3 и поэтому не протестировали свои доработки под iOS. RAD Studio 10.3.3 iOS Linking Patch устраняет проблему "RSP-23698": при линковке дебаг версии приложения для iOS dsymlink завершается ошибкой (при определенных настройках перед ошибкой вы также можете увидеть множество предупреждений).

04 декабря 2019

Ходячие мертвецы. BDE в Delphi 10.3 Rio

    В лихие 90-е... т.е. в далекие 90-е компания Borland для своих средств разработки придумала единый программный интерфейс для доступа к базам данных - "Open Database Application Programming Interface" (ODAPI). Он успешно прошел апробацию в ее первых версиях средств разработки для настольных баз данных под Windows: Quattro Pro, Paradox и dBase. Вскоре функционал ODAPI был расширен поддержкой SQL-серверов и возможностью выполнять SQL-запросы, как к серверным БД, так и к настольным. Его даже поддержали такие "уважаемые" компании как IBM и Novell, а компания Microsoft подхватила идею и выпустила свой подобное API - ODBC. Позже в названии слово "open" было заменено на "integrated" и под названием "Integrated Database Application Program Interface" (IDAPI) данная технология вошла в "Borland Database Engine" (BDE). Но BDE постигла судьба многих других продуктов, конкурировавших с Microsoft - лучший по функциональным возможностям программный продукт проиграл маркетинговую войну.

25 ноября 2019

Настройка шрифта главного окна Delphi IDE

    Среди новых возможностей RAD Studio 10.3 Rio - Release 3 заявлена "настройка шрифта и его размера для главного окна IDE, включая закрепляемые окна, такие как Projects view, Object Inspector, Structure и т. д., может быть произведена через реестр". В документации подробнее об этом я ничего не нашел. Так как же поменять этот шрифт?

22 ноября 2019

Первое обновление для RAD Studio 10.3.3

    Одновременно с релизом RAD Studio версии 10.3.3 компания Embarcadero выпустила для нее первое обновление. Возможно, из-за этого бага и был перенесен официальный релиз RAD Studio 10.3.3, инсталлятор которой на небольшое время был выложен 16-го ноября 2019 в публичный доступ и был быстро растиражирован пиратами.
    RAD Studio 10.3.3 iOS 13 Dark Theme Patch - это обновление устраняет проблему, когда приложения, созданные для iOS 13 на RAD Studio 10.3.3 с использованием FireMonkey, требуют от пользователя перезапуска приложения после переключения в настройках iOS между светлой и темной темой. Архив содержит файл "FMX.Platform.iOS.pas", который необходимо добавить в FireMonkey-проект и переключение тем в этом приложении будет работать корректно.

21 ноября 2019

Embarcadero выпускает RAD Studio 10.3.3

21 ноября 2019 года компания Embarcadero выпустила RAD Studio 10.3 Rio - Release 3. Новые возможности:

Delphi Android 64-bit
  • Новый компилятор Delphi под Android 64-бит базированный на LLVM инфраструктуре. Он совместим по функциям с 32-битным компилятором Android и поддерживает модель памяти ARC, как и все другие компиляторы под мобильной платформы (iOS 32/64-бит и Android 32-бит).
  • Расширенная поддержка RTL, включая доступ к основной файловой системе, интеграцию с платформой, управление памятью и потоками, а также клиентские библиотеки HTTP, REST, параллельного программирования и многое другое.
  • Полная поддержка библиотеки FireMonkey и всех элементов управления FireMonkey, ранее доступных на 32-битной платформе Android.
  • Поддержка RTL баз данных и библиотеки клиентского доступа FireDAC.
  • Улучшения в поддержке FMX для Android 32/64-бит.
  • Поддержка встраиваемой 64-битой версии InterBase (IBLite и IBToGo).

iOS 13 and macOS Catalina (Delphi) Support
  • Поддержка iOS 13 App Store (для Delphi и C ++ Builder) и macOS Catalina (только для Delphi). Для iOS 13 добавлена поддержка Dark Theme.

Enterprise Connectors in Enterprise & Architect Edition
  • В комплект поставки включена годовая подписка на Enterprise Connectors от CData, которая дает возможность подключения к различным приложениям через FireDAC таким же простым, как подключение к базе данных (Elasticsearch, QuickBooks Desktop, MailChimp, Salesforce, YouTube, SugarCRM, Jira, SurveyMonkey, Amazon DynamoDB, Couchbase, PayPal, eBay, Google Sheets, Facebook, Twitter, Slack, Dropbox и других).

Key Fixes & Notable Enhancements
  • улучшенная стабильность и обработка сообщений об ошибках системы, а также улучшенные образцы продуктов
  • C++
    • Множество исправлений в STL, RTL и компиляторе (особенно для Windows 64-бит)
  • IDE
    • Настройка шрифта и его размера для главного окна IDE, включая закрепляемые окна, такие как Projects view, Object Inspector, Structure и т. д., может быть произведена через реестр.
    • Вкладки редактора теперь показывают статус модуля "изменен", рисуя точку на вкладке редактора.
    • Несколько исправлений, касающихся изменения размеров, минимизации и максимизации IDE.
    • Ряд исправлений вокруг вкладок редактора, включая визуальные исправления.
    • Ряд исправлений для стиля IDE, включая Debug Inspector и окно CodeComplit.
  • Delphi Compiler and Runtime Library
    • Исправления компилятора для разных платформ (в частности, Windows и MacOS)
    • Несколько улучшений, связанных с 64-битным RTTI в macOS
    • Общие улучшения производительности RTL (включая TObject.CleanupInstance)
  • iOS
    • Улучшена поддержка редактирования, виртуальной клавиатуры и IME для iOS 13
    • Улучшения push-уведомлений
  • Android
    • Поддержка Android 10, включая улучшения для splash screen.
    • Исправления для компоненты "Камера" и связанных с ней действий.
  • macOS
    • Улучшена поддержка notarization для 64-битных приложений Delphi для macOS
  • FireDAC & Database
    • Улучшения в мастер/детейл и управлении BLOB
    • Улучшения драйверов FireDAC для PostgreSQL, SQLite, DB2 и Oracle
    • Исправления в старых библиотеках баз данных: ADO, ClientDataSet и DBX
  • Web Clients
    • Улучшена библиотека HTTP-клиента (поддержка тайм-аута соединения)
  • Debugger
    • Улучшений качество отладки (например, отладка константных строк для Delphi на Win64).
    • Большое количество улучшений для C++
Всего RAD Studio 10.3 Rio - Release 3 включает в себя исправление более 180 багрепортов от пользователей.

18 ноября 2019

Embarcadero RAD Studio 10.3.3 Rio

Пираты опередили компанию Embarcadero и 16-го ноября 2019 года уже выложили Embarcadero RAD Studio 10.3.3 Rio Architect Version 26.0.36039.7899 и генератор лицензий для него.

15 ноября 2019

Embarcadero выпускает СУБД InterBase 2020

Основные новшества InterBase 2020:

1. Добавлена поддержка табличных пространств. Табличные пространства позволят хранить объекты базы данных в коллекции логических файлов на различных носителях. Совместное использование быстрых SSD и больших HDD обеспечит лучшую производительность и более сбалансированное и оптимизированное использование оборудования.

2. Встраиваемая версия InterBase (IBLite и IBToGo) теперь доступна под 64-битные версии Android и MacOS. Это позволяет разработчикам создавать на Delphi 64-х битные приложения с встраиваемой версий InterBase для Google Play Store и macOS App Store. Полный список поддерживаемых IBLite и IBToGo платформ теперь включает: Windows, macOS, Linux, Android и iOS. InterBase 2020 Server Edition поддерживает пока только Windows, поддержка macOS и Linux будет добавлена позже.

3. Улучшенный Performance Monitoring позволяет получать текущую статистику о использовании индексов в базе данных и насколько они активны для различных запросов (оптимизация, сортировка по условию и т. д.).

4. Data Dictionary DDL. Новый синтаксис ALTER DESCRIPTION позволяет описать любой объект базы данных (например, таблицу, индекс, хранимую процедуру, генератор и т. Д.) для документирования схемы базы данных.

5. SQL-оптимизатор теперь может преобразовывать комбинацию оператора неравенства (<, <=, !=, <>, >, >=) и оператора NOT в их противоположное представление. Это повышает производительность за счет использования индекса. Например, условие "NOT A > 0" будет преобразовано в "A <= 0".

6. Улучшена безопасность за счет использования на всех платформах OpenSSL версии 1.0.2.

7. В IBConsole for Windows добавлена поддержка новых функций InterBase 2020: модификацию табличных пространств, словарь данных, расширенную поддержку недавно запатентованной технологии Change Views. А 64-битная версия IBConsole позволяет теперь в окне запроса получать большие наборы данных.

Подробнее: What's new in InterBase 2020.
Скачать InterBase 2020 (v14.0.0.97): Server Edition под Windows и ToGo Edition под Windows, Linux, macOS, iOS и Android.

12 ноября 2019

SQL доступ к Elasticsearch


    Что делать, если вы хотите использовать SQL-запросы к Elasticsearch, но не купили X-Pack и у вас нет доступа к Elasticsearch SQL?

Вариант первый: смириться и продолжить писать REST-запросы

Вариант второй: использовать специальную библиотеку для SQL-доступа к Elasticsearch. Например, CData Elasticsearch Driver. Она существует в множестве вариантов и позволяет получить доступ к данным в Elasticsearch из любых средств разработки и программ (FireDAC Components, ADO.NET Provider, ODBC Driver, JDBC Driver, Power BI Connectors, BizTalk Adapter, PowerShell Cmdlets, Excel Add-In, Anypoint Connectors, SSIS Component).

Рассмотрим использование CData FireDAC Components for Elasticsearch в Delphi.

08 ноября 2019

Формирование строкового значения для JSON

    При формировании строки для строкового значения JSON возникает необходимость контролировать некоторые символы. Например, если в содержимом строки есть двойная кавычка, то для получения строки JSON недостаточно взять исходную строку в двойные кавычки. Это двойную кавычку необходимо "экранировать" - поставить перед ней символ обратной косой черты ("\"). Кроме двойной кавычки обязательно необходимо экранировать саму обратную косую черту, а также все управляющие символы от U+0000 до U+001F (т.е. символы от 0 до 31).
    Рассмотрим подробнее, как экранируются символы. Любой символ от U+0000 до U+FFFF (не только управляющий) в строке JSON может быть представлен в виде последовательности из шести символов: обратный косая черта, строчная буква u, код символа в виде четырех шестнадцатеричные цифр. Буквы в шестнадцатеричные цифрах не зависят от регистра и могут быть как прописными, так и строчными. Например, буква "ё" представляется как "\u0451", а буква "к" как "\u043A".

05 ноября 2019

Elasticsearch. Замена знализатора по умолчанию

    Зачастую при работе с Elasticsearch для полей необходимо указать не стандартный анализатор. Например, если нам нужен анализатор для конкретного языка или необходимо специфическая обработка текста (например, исключить определенные слова, задать список синонимов, или как я уже писал – приравнять Ё к Е...).
    Задать полю не стандартный анализатор можно сделать при маппировании полей индекса:
PUT http://localhost:9200/test/_mappings
{
  "properties": {
    "id": { "type": "long" },
    "num": { "type": "text" },
    "name": {
      "type": "text",
      "analyzer": "new_ analyzer"
    }
  }
}
В этом примере, поле "num" будет обрабатыватсья стандартным анализатором, а поле "name" будет обрабатыватсья нашим собственным анализатором "new_ analyzer".
    А, что делать, если этот не стандартный анализатор нужно задать полям, которые маппируются динамически, а темплейт делать лень? Или для всех полей индекса?

28 октября 2019

Delphi & PostgreSQL. Фиксим "character with byte sequence 0xcc 0x81 in encoding "UTF8" has no equivalent in encoding "WIN1251""

В логах моей программы появилась странная ошибка:
25.10.2019 10:01:24.523 Thread #5: character with byte sequence 0xcc 0x81 in encoding "UTF8" has no equivalent in encoding "WIN1251"
Первой мыслью было, что Elasticsearch не принял данные, которые я ему передал REST-запросом. Но запустив программу под отладкой я получил эту ошибку при открытии запроса к БД PostgreSQL:
Project XYZ.exe raised exception class EPgError with message 'character with byte sequence 0xcc 0x81 in encoding "UTF8" has no equivalent in encoding "WIN1251"'
Посмотрев в БД данные, я сначала из-за у-умлаут грешил на слово "Zürich". Но сохранив текст в двух вариантах в файл (UTF8 и ANSI) и сравнив их, я увидел, что разница была в "Дадаи́зм" и "Дадаи?зм". Таким образом врагом WIN1251 объявляю букву "и" с ударением!

Враг назначен, т.е. найден, теперь будем решать, что с ним делать.

24 октября 2019

PostgreSQL и часовой пояс


    Заметил, что у меня в базе данных на PostgreSQL, все поля, которые заполняются по умолчанию текущим временем (DEFAULT LOCALTIMESTAMP), отстают от реального времени на 10 часов. В 19:45 запрос
select localtimestamp, current_timestamp
вернул
"11.10.2019 9:45:56" "2019-10-11 09:45:56.884309-07"

20 октября 2019

"ё"... "е"... какая мне разница? Программа должна найти!

 Буква "ё" совсем не важна... Завтра похолодает и мы все передохнем от жары...

    Иногда я завидую англоязычным программистам. Например, на клавиатуре им не надо переключать раскладку. А ещё у них нет буквы "Ё"! Буква "Ё" - это очень своенравная особа. Она обязательна только в собственных именах, а в остальных случаях употребление "Ё" или "Е" определяется выбором автора текста. Но при этом пользователя, который ищет по тексту, не заботит, что написал автор - "Ё" или "Е". А какая ему разница? Программа должна найти!

15 октября 2019

Получение в программе значения первичного ключа после INSERT

    Часто бывает, что после добавления строки в таблицу необходимо получить сгенерированное в СУБД значение первичного ключа. Например, это необходимо для последующей вставки detail-данных. Самый "оригинальный" способ, что я видел: стартуем транзакцию, вызываем INSERT, делаем запрос "select MAX(ID) from table", вставляем detail-данные, коммитим... Но мы пойдем другим путем – без дополнительных запросов к базе данных. Мы воспользуемся вызовом оператора INSERT с модификатором RETURNING. Вопрос только в том, как получить в программе значение из RETURNING?

11 октября 2019

Требуется уборщик со знанием Borland Delphi

Я знал, что Беларусь – это ИТ-страна, но не думал, что на столько. Уже на вакансию уборщика офисных помещений в туристическом агентстве среди ключевых навыков называют: знание BPWin и Borland Delphi!

09 октября 2019

Работа с файлами формата MS Excel в программе под Linux

    Продолжая тему обработки файлов формата MS Excel в программах на Delphi, поговорим об их обработке в программе под Linux. Такую возможность программистам на Delphi предоставляет библиотека TMS FlexCel. Она позволяет работать с файлами формата MS Excel под всеми операционными системами, под которые Delphi умеет создавать исполняемый файл: Windows, Linux, Android и iOS.

04 октября 2019

Правильный обход матрицы

    В статье Романа Кунина "Оптимизация кода: память" рассмотрены две функции на C++, которые суммируют элементы матрицы. Они практически одинаковы, только первая функция обходит элементы матрицы по строкам, а вторая по столбцам. Проведем подобный тест на Delphi 7 и Delphi 10.3.2.
    В отличии от оригинального теста, в котором суммируют элементы матрицы я предлагаю еще измерить скорость заполнения матрицы.

30 сентября 2019

Delphi & Elasticsearch. Загрузка и индексирование файлов

    В статье "Полнотекстовый поиск по содержимому файлов" я рассказывал, что нужно сделать для загрузки файла на индексацию в Elasticsearch. Теперь подробно рассмотрим реализацию этого процесса на Delphi с использованием стандартных классов HttpClient и NetEncoding.
    Думаю, что будет более понятно если я включу описание реализации в качестве комментариев в текст процедуры индексации файла.
uses
  System.Classes,
  System.SysUtils,
  System.StrUtils,
  System.Hash,
  System.NetEncoding,
  System.Net.HttpClient,
  System.Net.HttpClientComponent;

const
  csBaseUrl = 'http://localhost:9200/';
...

26 сентября 2019

RAD Studio 10.3.2 C++ Debugging Patch

  Обновление устраняет баг, который не позволяет просмотреть значения переменных при отладке программ, собранных с помощью компилятора bcc32 (RSP-25943). Это ошибка аналогична ошибке, возникавшей при отладке программ, собранных с помощью компилятора Clang под Win32 (RSP-25527) и устраненной 14 августа 2019 г. в обновлении "RAD Studio 10.3.2 C ++ и Delphi Toolchain Patch". Текущее обновление устраняет проблему с просмотром значений переменных для обоих компиляторов (и для bcc32 и для Clang под Win32). Если вы устанавливаете оба эти исправления, то устанавливайте их в порядке выпуска.
    RAD Studio 10.3.2 C++ Debugging Patch - доступен только для зарегистрированных пользователей RAD Studio, Delphi, C ++ Builder 10.3 и All-Access.

Глобальная переменная - тормоз!

    В начале статьи Александра Алексеева "Что плохого в глобальных переменных?" меня зацепила фраза "быстрее в работе". Я хочу поспорить с ней и поддержать Александра в аргументах против глобальных переменных.
    Я давно заметил, одну маленькую неприятность с глобальными переменными. Проведем небольшой тест на создание, заполнение и чтение TStringList.

23 сентября 2019

Delphi & Linux. "Project raised exception class Segmentation fault (11)"

    Проверил новую версию программы под Windows - все работает нормально. Сразу делаю релизный билд под Linux, запускаю и получаю ошибку "Project XYZ raised exception class Segmentation fault (11)". Как это? Что это?
    Запускаю программу под отладкой под Linux и нахожу виновника ошибки. Им оказывается метод определения кодировки:

19 сентября 2019

Полнотекстовый поиск по содержимому файлов

    Многие программисты сталкиваются с тем, что их информационная система должна иметь полнотекстовый поиск. На помощь им приходят разработчики СУБД, которые предлагают свои решения. Встроенный механизм полнотекстового поиска есть у всех ведущих СУБД: Oracle, SQL Server, MySQL, PostgreSQL... Но не все они, как Oracle Text, умеют индексировать содержимое документов в форматах MS Office, PDF, XML, HTML... плюс к этому у многих есть проблемы с морфологией русского языка и производительностью.
    Единственным выходом является использование специальных поисковых систем. Наиболее распространенными являются системы построенные на базе библиотеки Lucene: Elasticsearch, Solr и Sphinx. Мой выбор пал на Elasticsearch.

16 сентября 2019

Запись в MS Excel. Кто быстрее?


    В марте этого года я протестировал скорость чтение информации из файла MS Excel библиотеками работающие с файлом MS Excel "напрямую" (Чтение из MS Excel. Кто быстрее?). Сегодня давайте взглянем, как эти библиотеки справляются с записью файла.
    Мой тест создает новый XLSX-файл с одним листом, на который записывает 10000 строк по 100 столбцов.
const
  ciRowCount = 10000;
  ciColCount = 100;
Каждая библиотека формирует файл 10 раз и результатом теста является среднее время. В качестве компилятора использована RadStudio v10.3.2. А результаты подтверждены на другом компьютере с компиляцией в RadStudio v10.3.1.

11 сентября 2019

Delphi & Linux. Выпусти своего демона

    В далеком 2003-м году один из наших заказчиков начал переход на Linux. Для него мы сделали свой первый проект на Kylix. Первый... и последний... Заигравшись с Microsoft компания Borland успешно похоронила Delphi под Linux... Спустя 15 лет после этого разработчики Delphi снова вернулись к теме Linux, выпустив в 2017 году Embarcadero Delphi 10.2 Tokyo с поддержкой Linux x86_64.
    Недавно мне понадобилось написать "службу", которая работает и под Windows и Linux. Оказалось, что все не просто, а очень просто.

09 сентября 2019

Новый генератор XLSX-файлов в EhLib 9.4

    В EhLib всегда была возможность экспорта содержимого DBGridEh в MS Excel. Но EhLib версии 9.4 была дополнена новым классом TXlsMemFileEh, который не привязан к DBGridEh и является настоящим генератором файлов в формате MS Excel. Т.е. при желании используя TXlsMemFileEh можно создавать XLSX-файлы на основании любых данных.

04 сентября 2019

FlexCel и "'msbuild.exe' is not recognized as an internal or external command"

    Решил я на сон грядущий установить последнюю версию TMS FlexCel под Delphi Rio. Инсталлятор успешно удалил старую версию библиотеки, но установку новой версии завершил ошибкой:
'msbuild.exe' is not recognized as an internal or external command
    В FlexCel Installation Guide по поводу этой ошибки написано "This version of the product does not support command line compiling" с намеком, что у меня Delphi Starter или Delphi Trial. И так как это не так, то единственный выход - это компиляция и установка пакетов библиотеки вручную. Устанавливать больше десяти пакетов вручную мне было лень, поэтому я начала искать другой выход.

16 августа 2019

Обновления для RAD Studio 10.3.2


Похоже, что после релиза RAD Studio версии 10.3.2 ее разработчики дружно забухали и/или ушли в отпуск на две недели. А в августе протрезвели и/или вернулись из отпуска и начали усилено править добавленные в этом релизе баги:

08.08.201930886RAD Studio 10.3.2 Runtime Packages Compatibility Patch
Решает проблему совместимости пакетов времени выполнения с более ранними выпусками Delphi или C ++ Builder 10.3 (под Win32, Win64, macOS32 и Linux64)
08.08.201930887Delphi 10.3.2 macOS Debugging Patch
Решает проблему не корректного отображения переменных, переданных в качестве параметров при отладке под MacOS 64-bit
13.08.201930888RAD Studio 10.3.2 C++ and Delphi Toolchain Patch
Решает проблемы:
* при отладке приложений, собранных с помощью Clang под Win32, вместо значений локальных переменных отображался "?" (RSP-25527)
* fatal error при линковке большого приложения Delphi под MacOS 64-bit
13.08.201930889C++Builder and Delphi 10.3.2 Building Changed Files Patch
Решает проблему того, что иногда после изменения исходного кода в IDE, эти изменения не включаются в скомпилированный бинарный файл (RSP-25509, RSP-25590)

23 июля 2019

Delphi 7 HELP под Windows 10

    "В интернетах" пугают о проблемах при установке и работе Borland Delphi 7 под Windows 10. Недавно мне пришлось установить Delphi 7 под Windows 10. Запустил - работает. Установил на него обновление, запустил - работает. Установил библиотеки, скомпилировал модули проекта - все работает без проблем. Мне даже не пришлось запускать delphi32.exe в режиме совместимости (Compatibility mode) или от имени администратора (Run this program as an administrator).
    А где обещанные проблемы?

19 июля 2019

Релиз Delphi / C++Builder / RAD Studio 10.3.2


Вчера состоялся релиз RAD Studio 10.3 Rio Release 2.

Новые ключевые возможности:
  • Delphi Linux Client Application Support
  • macOS 64-bit support for Delphi
  • C++ 17 for Windows 64-bit
  • C++ LSP Code Insight Improvements
  • RAD Server Wizards and Deployment Improvements
  • Enhanced Firebase Android Support

Коротко о том, что заинтересовало меня:
Runtime Library Performance
  • VCL DFM files loading optimization
  • Variants conversions performance

VCL Quality Improvements
  • Significant VCL quality improvements, with over 50 VCL customer reported issues fixed
  • Improvements in many components including ComboBox, MainMenu and PopupMenu, TreeView, StatusBar, PageControl, Button, DateTimePicker
  • Improvements in forms, frames, painting and styling primitives

IDE
  • A number of quality IDE improvements, especially when resizing and moving the IDE
  • Delphi background compilation in the IDE for all platforms
  • Performance improvements loading forms
  • Significant UI and UX quality improvements, including issues around the IDE’s toolbars, title bar and search, scrolling in the Options dialog, switching between layouts such as when starting debugging, flicker, previously unthemed elements now themed, the guided tour, and more
  • Faster file search operations

Web Clients
  • REST Client Library quality improvements
И главное: пофикшено около 400 баг-репортов от пользователей программистов.

18 марта 2019

Чтение из MS Excel. Кто быстрее?


    При написании "Заполнение страницы MS Excel одной командой" я вспомнил про библиотеки работающие с файлом MS Excel "напрямую". Посмотрим, насколько чтение информации из MS Excel "напрямую" быстрее, чем при использовании OLE.
    Создадим файл с 1 000 000 строк по 5 столбцов и прочитаем его различными способами.

11 марта 2019

Заполнение листа MS Excel одной командой


 "А чё, так можно было, что ли?!?"
 © Уральские пельмени

    Недавно, правя баги в чужом проекте, я в методе генерации отчета в шаблон MS Excel обнаружил то, о чем сам никогда не задумывался... Среди сотни строк присвоения значений ячейкам, я заметил, что одна таблица из сотни ячеек копируется на лист MS Excel одной строкой...
    Алгоритм очень прост: создаем динамический двумерный вариантный массив, заполняем его значениями и присваиваем диапазону ячеек:

21 февраля 2019

Автоподбор высоты строки MS Excel после объединения ячеек

    Шел 2019-й год... а MS Excel по-прежнему не научился рассчитывать высоту строки если в ней есть объединённые ячейки... И метод Range.AutoFit, который "Changes the height of the rows in the range to achieve the best fit", нас не спасёт.

Например, объединим ячейки A1 и B1 и поместим в них многострочный текст:
Var
  ea: TExcelApplication;
  ovRange: OleVariant;
begin
  ...
  ovRange := ea.Range['A1', 'B1'];
  ovRange.Merge;
  ovRange.Value := '1'#13#10'2'#13#10'3'#13#10'4'#13#10'5';
  ovRange.EntireRow.AutoFit;