Одна из проблем, с которыми сталкиваются программисты на Delphi при чтении текстового файла – это определение его кодировки. Метод TEncoding.GetBufferEncoding работает корректно только если файл содержит метку порядка байтов (Byte Order Mark, BOM) для одной из стандартных кодировок. Если переданный в него буфер не содержит BOM, то возвращается кодировка по умолчанию. TEncoding.Default зависит от операционной системы. Например, для Windows – это ANSI, Linux или macOS – это UTF-8. То есть при отсутствии в текстовом файле BOM задача определения его кодировки (UTF-8 или ANSI или ASCII) лежит на программисте. И вот наконец-то в Delphi появился для этого свой функционал.
Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами
31 июля 2023
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 купила лицензий и платила ли вообще?
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 синхронизируются.
14 июля 2023
Многострочные строковые литералы в Delphi 12
Продолжим тему строковых литералов в Delphi 12. Кроме длинных строковых литералов в компилятор Delphi 12 добавлена поддержка многострочных строковых литералов. Больше не будет необходимости, как раньше, объединять строки в один строковый литерал используя оператор "+".
12 июля 2023
Длинные строковые литералы в Delphi 12
Строки в Delphi, можно сказать, безразмерные. Они могут занимать в памяти до 2GB и вмещать примерно 230 символов для UnicodeString, или даже 231 для AnsiString. Но для обратной совместимости у него есть строковый тип ShortString, который как классическая строка Pascal, ограничена 255 символами. Все эти годы компилятор Delphi обрабатывал строковые литералы как ShortString. Поэтому если программист в коде писал литерал из более чем 255 символов, то получал ошибку "E2056 String literals may have at most 255 elements ".
Что бы избавиться от ошибки, такой строковый литерал необходимо было разделить на несколько отдельных литералов и объединить их, используя оператор "+". Delphi 12 снял это ограничение. Теперь длина строки литералов ограничиваться только ограничениями редактора (4K символов в строке).
Подписаться на:
Сообщения (Atom)