Показаны сообщения с ярлыком Yukon. Показать все сообщения
Показаны сообщения с ярлыком Yukon. Показать все сообщения

11 октября 2023

Delphi 12. Генерация графа зависимостей между модулями проекта в Graphviz-файл

    В компилятор Delphi 12 добавлена возможность генерации графа зависимостей между модулями проекта в файл формата Graphviz (Graph Visualization Software). Она реализована непосредственно на уровне компилятора без дополнительного инструмента синтаксического анализа. Подобный граф может помочь разработчикам понять структуру проекта и избежать ненужных циклических ссылок на модули, которые могут замедлить компиляцию или вызвать негативные побочные эффекты для самого компилятора.

02 октября 2023

Android API 33 уровня и другие улучшение поддержки Android в Delphi 12

    Начиная с 31 августа 2023 года Google Play Store ожидает, что новые приложения должны быть нацелены на Android 13 (33 уровень API) или выше. Delphi 11.3 не поддерживает Android API 33 уровня. Так как добавление его полной поддержки требует значительных трудозатрат, то это будет сделано только в Delphi 12. Кроме добавления поддержки Android API 33 уровня в Delphi 12, есть и другие существенные улучшения FireMonkey для Android:

20 сентября 2023

Delphi 12. Заголовки Windows API сгенерированные из Win32Metadata

    В январе 2021 года компания Microsoft представила на GitHub свой новый проект Win32Metadata. Его цель – создать полное описание Windows API в виде файла метаданных Windows.Win32.winmd, который позволяют автоматически переводить заголовки его модулей на любые языки программирования. В рамках проекта Microsoft реализовала инструмент для перевода заголовков Win32 API на C# и Rust, а сообщество разработчиков реализовало его для Beef, D, Dart, Python и Zig. Вот теперь в Embarcadero разработали подобный конвертор для перевода заголовков Win32 API на Delphi.

11 сентября 2023

Delphi 12. Улучшения для списков, массивов и коллекций

    Среди прочих изменений RTL в Delphi 12 можно выделить доработку функциональных возможностей списков, массивов и коллекций:

04 сентября 2023

Delphi 12. Поддержка разделенного экрана в FireMonkey

    Мобильные операционные системы, чтобы одновременно работать с двумя приложениями, позволяют разделить экран устройства пополам. Эта функция особенно полезна на устройствах с большим размером экрана. Разработчики Delphi 12 добавили в библиотеку FireMonkey поддержку создания приложений для iOS и Android, которые используют только часть экрана доступную после его разделения.

01 сентября 2023

Delphi 12. Поддержка сравнения с NaN в соответствии с требованиями IEEE

    Стандарт IEEE 754 требует, чтобы все операции сравнения с NaN возвращали значение False. Согласно ему, "в синтаксисе C предикат x != y имеет значение True, но все остальные: x < y, x <= y, x == y, x >= y и x > y имеют значение False всякий раз, когда x или y или оба аргумента имеют значение NaN". В Delphi 12 поддержка сравнения с NaN реализована в соответствии с этими требованиями стандарта IEEE 754.

30 августа 2023

Delphi 12. Отображение элементов TListView в виде плиток

    TListView в Delphi всегда поддерживал четыре режима отображения своих элементов:
  • vslcon – полноразмерные иконки с заголовком под ними;
  • vsSmalllcon – маленькие иконки с заголовком справа от них;
  • vsList – список маленьких иконок с заголовком справа от них;
  • vsReport – таблица, в которой крайний левый столбец содержит маленькие иконки с заголовком, а остальные столбцы содержат подэлементы.
В Delphi 12 список этих режимов дополнился новым режимом "в виде плитки" (Tile View), который доступен в базовом контроле операционной системы.

24 августа 2023

Улучшенный диалог поиска в файлах в Delphi 12

    Диалог "Find in Files" в RAD Studio 12 получил новый параметр "Subdirectory exclude mask". Этот параметр позволяет при поиске по содержимому файлов в каталогах ("Search in directories") с вложенными подкаталогами ("Include subdirectories") исключить из поиска определенные каталоги. По умолчанию исключаются каталоги "__history" и "__recovery", а для разработчиков на C++ Builder еще и "__astcache".

21 августа 2023

Новый менеджер платформ Delphi 12

    Менеджер платформ – это часть инсталлятора RAD Studio, которая потом доступна в IDE через меню "Tools > Manage Platforms". Он позволяет выбирать пользователю необходимые для работы языки программирования, поддерживаемые операционные системы и связанные с ними элементы. К сожалению, предыдущая реализация менеджера платформ была не удобна для использования, имела ряд проблем и даже ошибок. В Delphi 12 был полностью переработан его пользовательский интерфейс и поведение при установке платформ и других элементов.

18 августа 2023

В Delphi 12 для всех платформ отключили исключения в операциях с плавающей точкой

    Начиная с Delphi 1 RTL использовала исключения в операциях с плавающей точкой. Но в последние годы современные операционные системы, такие как Windows, macOS и Linux, и их официальные средства разработки, перестали использовать модель "floating-point exception" ("FP Exception"). То, что API-интерфейсы ОС предполагают отсутствие исключений, а Delphi RTL их использует, может привести к крашу приложения. Для решения этой проблемы разработчики Delphi ранее уже отключили исключения в операциях с плавающей точкой на платформах отличных от Windows и, чтобы избежать проблем при рендеринге изображений, в FMX под Windows. В Delphi 12 это сделали для всех платформ (Windows, macOS, iOS, Android и Linux).

16 августа 2023

Новый режим двойной буферизации VCL-контролов в Delphi 12

    Иногда у приложений написанных на Delphi проявляется одна маленькая, но неприятная проблема – при перерисовке VCL-контрола он "мерцает". Для ее решения разработчики Delphi добавили наследникам TWinControl свойство DoubleBuffered (тип boolean). Если DoubleBuffered имеет значение false, то контрол рисует себя непосредственно в окне. Если DoubleBuffered имеет значение true, то контрол рисует себя сначала на bitmap в памяти, а затем bitmap рисуется на окне. Двойная буферизация уменьшает мерцание, но требует больше памяти. Кроме повышенного расхода памяти есть и более существенные проблемы. Например, зависание VCL-приложений при работе через удаленные рабочий стол (RDP). Этой проблемой страдала даже сама IDE RAD Studio. Любое изменение сеанса RDP (блокировка, разблокировка, подключение, отключение) вызывает изменение общесистемных настроек (WM_SETTINGCHANGE), которое приводит к каскаду сообщений и множеству перерисовок IDE. Устранили это только в RAD Studio 10.4.2. В Delphi 12 механизм двойной буферизации VCL-контролов был доработан.

10 августа 2023

Улучшения для диспетчера окон рабочего стола Windows 11 в Delphi 12

    Диспетчер окон рабочего стола (Desktop Window Manager, DWM) – система графического интерфейса рабочего стола Windows, которая использует аппаратное ускорение для отрисовки графического интерфейса пользователя. Разработчики Delphi добавили в Delphi 12 поддержку некоторых ее функций специфических для Windows 11.

03 августа 2023

Поддержка QBE в Delphi 12

    В 1970-х годах исследовательский центр компании IBM предложил новый способ создания запросов к базе данных – QBE (Query by Example). Он подразумевает ввод конечным пользователем информационной системы образцов значений полей в виде текстовой строки, которые потом преобразуются в стандартный запрос к базе данных. Это позволяет простому пользователю делать сложные запросы без необходимости изучать специализированный язык запросов (например, SQL), синтаксис которого может быть недоступен ему для понимания. Разработчики Delphi 12 добавили поддержку QBE в FireDAC.

31 июля 2023

Улучшение поддержки файлов формата UTF-8 без BOM в Delphi 12

    Одна из проблем, с которыми сталкиваются программисты на Delphi при чтении текстового файла – это определение его кодировки. Метод TEncoding.GetBufferEncoding работает корректно только если файл содержит метку порядка байтов (Byte Order Mark, BOM) для одной из стандартных кодировок. Если переданный в него буфер не содержит BOM, то возвращается кодировка по умолчанию. TEncoding.Default зависит от операционной системы. Например, для Windows – это ANSI, Linux или macOS – это UTF-8. То есть при отсутствии в текстовом файле BOM задача определения его кодировки (UTF-8 или ANSI или ASCII) лежит на программисте. И вот наконец-то в Delphi появился для этого свой функционал.

28 июля 2023

Новый способ получения OUTPUT-значения после DML операции MS SQL Server в FireDAC Delphi 12

    Так получилось, что с периодичностью в два года я пишу о получении в программе значения первичного ключа, который сгенерирован СУБД при добавлении в таблицу новой строки. В 2019-м я писал об этом для UniDAC, потом в 2021-м для FireDAC. Разработчики Delphi 12 предоставили повод написать об этом и в 2023-м. В FireDAC для MS SQL Server, по аналогии с PostgreSQL и Firebird/InterBase, добавлена возможность получения OUTPUT-значения после DML операции с помощью параметров.

26 июля 2023

Новые редакторы свойств контролов в IDE Delphi 12

    Уже несколько лет пользователям Delphi и C++ Builder через RAD Studio GetIt Package Manager доступен бонус – библиотека Konopka Signature VCL Controls (KSVC). Это библиотека, права на которую Embarcadero купила у Raize Software, имеет большой набор VCL-контролов и дизайнеров их свойств. Авторы Delphi 12, чтобы упростить разработчикам проектирование пользовательского интерфейса, добавили в IDE Delphi некоторые дизайнеры свойств из библиотеки KSVC.

24 июля 2023

Получение списка дочерних контролов в Delphi 12

    В VCL получить список дочерних контролов у контрола можно с использованием цикла по массиву дочерних контролов TWinControl. Так как некоторые контролы сами могут быть контейнерами для контролов, то метод получения списка контролов на всех уровнях вложенности должен вызываться рекурсивно. В Delphi 12 эту задачу облегчили добавлением TControl Enumerator.

21 июля 2023

Новая версия RAD Server использует FastMM 5

    Весной 2020 года состоялся релиз менеджера памяти FastMM 5. Ядро новой версии RAD Server, которая будет выпущена с Delphi 12, использует FastMM5. Переход на FastMM5 позволил увеличить производительность RAD Server. Особенно в сценариях с интенсивной многопоточностью. Средний прирост производительности составил 5%.
    FastMM 5 имеет двойную лицензию: бесплатную (соответствующую GPL v3) и коммерческую. Интересно, на сколько разработчиков компания Embarcadero купила лицензий и платила ли вообще?

19 июля 2023

NativeInt в Delphi 12 стал "слабым" псевдонимом

    В работе с целочисленными типами у компилятора Delphi 12 произошло существенное изменение, которое повлияет на перегрузку процедур/функций и совместимость 32-х и 64-х битного кода. Речь идет о "плавающем" типе NativeInt (NativeUInt). В 32-х битном приложении он эквивалентен типу Integer, а в 64-х битном типу Int64. К тому же размер NativeInt эквивалентен размеру указателя в выбранной платформе (4 или 8).

17 июля 2023

Свойство ShowInTaskbar у TForm в Delphi 12

    В Delphi 12 классу TForm добавили новое свойство ShowInTaskbar. Это свойство определяет, должна ли форма иметь иконку на панели задач Windows. То есть теперь даже не основная форма приложения, у которой свойство ShowInTaskBar имеет значение True, будет иметь на панели задач свою иконку. Это позволит свернуть и восстановить форму через ее иконку на панели задач независимо от состояния основной формы. Для основной формы приложения (Application.MainForm) свойства ShowInTaskBar и Application.MainFormOnTaskBar синхронизируются.