Хотел бы пригласить принять участие в закрытом бета-тестировании Delphi-компонентов, предназначенных для взаимодействия с «T-Invest API» брокера «Т-Инвестиции», причём они являются не просто обёрткой над API-методами, а предлагают более удобные абстракции — например, унифицируют работу с подписками на различные данные (позиции портфеля, стакан инструмента, статус заявки и т. п.).
Подробности участия можно узнать здесь (по ссылке также размещена документация на компоненты, где описаны, в том числе, технические детали).
Q1: Если сейчас есть задача по-быстрому сбацать что то с формами под винду - какая есть альтернатива дельфи?
Q2: А если так же быстро накидать, только кроссплатформенное приложение и без зависимостей?
И мой ответ
A: Не находишь, что 3000$ за кроссплатформенный дизайнер форм слишком дорого? Даже за хороший.
Собственно, порылся в памяти и в википедии, проверил что там еще живое и набросал списочек визуальных дизайнеров для Linux - приложеньиц. По названию язык программирования и фреймворк легко идентифицируется.
Все может использоваться бесплатно и без особых претензий на функциональность. Единственное, иногда бывает нужно еще нарисовать какой то чарт/график и загрузить/записать данные в БД/XML/JSON - с этим могут быть нюансы с конкретным вариантом.
С чем то я работал, с чем то нет, актуальные версии вживую не проверял.
GNOME Builder (ex.Anjuta). GTK multilang IDE
Cambalache (ex.Glade) - GTK form builder
Qt Creator
FLUID for FLTK
wxFormBuilder for wxWidgets
Projucer for JUCE
Ultimate++
NetBeans GUI design tool for Java Swing
TKproE (TCL/TK Programming Environment)
Lazarus
MSEide+MSEgui Pascal
GTK# Visual Designer MonoDevelop (retired)
Xamarin.Forms GTK Backend (discontinued for NET MAUI)
Главная особенность этого релиза - предварительный выпуск x64 IDE.
Т.е. теперь Rad Studio IDE это 64-bit приложение, не ограниченное ~4Гб ОЗУ, что решает проблемы с нехваткой памяти на очень больших проектах, подключением x64 DLL в DesignTime, и т.д..
Интересно, что в то время как "пользовательский софт", в большинстве своем, давно уже "в мире x64", в софте для разработчиков же "20 лет как устаревший x86" -это норма. (Visual Studio получила x64 IDE тоже не так давно, в 2022 году - https://habr.com/ru/companies/microsoft/articles/553442/)
Разработчикам DesignTime пакетов, в большинстве случаев, достаточно просто пересобрать их под x64. Я протестировал на своем OpenSource наборе компонентов FreeEsVclComponents, и после минорных правок получил корректную работу в x64 IDE.
В этом, оценочном релизе, в x64 IDE доступна компиляция только под x64, есть ограничения по отладке, доступны не все плагины и компоненты в GetIt, на то он и "оценочный".
В любом случае, поздравляю всех пользователей Delphi, с очень большими проектами, жаждущих 64-bit IDE - дождались.
Одним из серьёзных вызовов для Delphi-разработчиков сегодня является модернизация давно работающих проектов и переход на свежую версию языка и среды разработки Delphi. Габриэль Морару – опытный программист, евангелист Delphi, автор книг и блогер – обратился ко всем желающим с предложением бесплатно обновить их проект до современных стандартов в программировании, обеспечив совместимость с Delphi 11.3 и 64-битными ОС.
12 сентября 2024 года, вышло Update 2 для Delphi 12 Athens - Delphi 12.2.
Из основных особенностей:
Появился 64-х битный компилятор Delphi. (Сам компилятор, а не создаваемый им код, поддержка компиляции x64 программ есть с 2011 года). На данный момент это поддержка только для компиляторов командной строки. Поддержка x64 компиляторов позволяет упростить компиляцию действительно больших проектов, избавляясь от Out Of Memory в компиляторе.
Delphi LSP также также получил поддержку x64.
WebStencils Template Library - поддержка HTMX шаблонов.
Smart CodeInsight - поддержка AI плагинов в IDE.
Focus Mode - полноэкранный режим редактора в IDE, созданный для написания кода без отвлекающих факторов.
Улучшение полосы прокрутки редактора IDE, теперь она отображает предупреждения, ошибки, и т.д.
Состоялся релиз интегрированной среды разработки Lazarus 3.0, основанной на компиляторе FreePascal и выполняющей задачи, сходные с Delphi. Среда рассчитана на работу с выпуском компилятора FreePascal 3.2.2.
Готовые установочные пакеты с Lazarus подготовлены для Linux, macOS и Windows.
набор виджетов на базе Qt6, построенный с использованием С-привязок из Qt6 6.2.0;
улучшен набор виджетов на базе Qt5, в котором задействован родной для Qt цикл обработки событий;
для всех версий Qt реализованы компоненты TCheckBox.Alignment, TRadioButton.Alignment, TCustomComboBox.AdjustDropDown и TCustomComboBox.ItemWidth;
Полностью переработаны привязки на базе GTK3, для которых теперь требуется наличие как минимум версий GTK 3.24.24 и Glib 2.66;
в наборе виджетов Cocoa, используемых в приложениях для macOS, добавлена поддержка многомониториных конфигураций и возможность использования IME (Input Method Editor), например, для ввода Emoji;
расширены возможности или изменено поведение компонентов TCustomImageList, TTaskDialog, TSpeedButton, TLabel, TPanel, TCalendar, TCheckbox, TRadioButton, TShellTreeView, TShellListView, TTreeView;
переделан интерфейс карты символов, который теперь оформлен в виде отдельного пакета и поддерживает изменение размера символов;
Добавил в клиент ChatGPT возможность создавать и использовать внешние функции:
Для примера сделал две команды: "Узнать погоду" и "Выполнить команду через cmd"
Функции чата GPT - это механизм их API, который позволяет GPT вызывать по необходимости функции, которые вы регистрируете (отправляете в запросе как доступные) и работать с результатом их выполнения.
Достаточно интересный и опасный механизм. Во избежании проблем, которые могут возникнуть я добавил настройку, которая позволяет подтверждать выполнение функции и просмотреть параметры, с которыми будет вызвана функция.
Функции можно подключать в качестве динамической библиотеки, которая экспортирует функцию gptfunctions, которая в свою очередь возвращает массив объектов, которые представляют функции - объекты типа IChatFunctionExternal.
function gptfunctions: TArray<IChatFunctionExternal>;
begin
Result := [TChatFunctionCMD.Create];
end;
IChatFunctionExternal = interface
['{B2DACD74-B773-44C2-838D-43BF99CB5405}']
function GetDescription: WideString; //Example: 'Get the current weather in a given location'
function GetName: WideString; //Example: 'get_current_weather'
function GetParameters: WideString; //JSON Scheme
function Execute(const Args: WideString): WideString; //Args - json with params, result - json with info
end;
GPT без проблем может вывести список файлов и даже показать содержимое (с кириллицей я пока не разобрался).
Исследовал тут проблему завершения программы при завершении сессии винды в FMX. При таком сценарии происходит утечка памяти, т.к. Application не освобождается при завершении программы. Проблема это не большая и ни на что не влияет. Но, помимо этого тут затронут момент сохранения пользовательских данных при завершении программы. Как вы могли заметить, если программа убивается, например, Андроидом, когда он решил, что она давно не используется, то событий закрытия или уничтожения формы не происходит.
Я нашёл интересное событие у формы, но в первую очередь, я увидел, что в FMX, в отличии от VCL, по умолчанию обрабатывается событие WM_ENDSESSION и WM_QUERYENDSESSION, которые мы обычно в VCL обрабатывали вручную у формы через message. Так вот, WM_QUERYENDSESSION по-умолчанию разрешает завершение программы, а вот WM_ENDSESSION, который происходит после этого события генерирует событие у формы под названием OnSaveState.
Так что, я рекомендую все сохранения настроек или других данных пихать именно туда.
Модуль FMX.Platform.Win.pas
О самой проблеме с утечкой. Её я тоже решил. Косяк в том, что при WM_ENDSESSION происходит завершение программы изнутри процедуры обработки сообщений, что в свою очередь приводит к задержанию в памяти Application. Всему виной строка Halt (3-я снизу).
Решается это просто, если взять на себя модуль FMX.Platform.Win.pas и изменить немного этот код. Нужно Halt вызвать через очередь сообщений.
Application.Terminate; TThread.ForceQueue(nil, procedure begin Halt; end);
Модифицировал штатный Memo (FMX) для добавления возможности форматирования текста. А также, ускорил его работу в разных аспектах (прокрутка, выделение, вставка строк и т.д.) Актуально для Delphi 11.3 (на более ранних, скорее всего, работать не будет, т.к. внесены изменения в штатный модуль FMX.Memo.Style.pas, который может быть несовместим между версиями. Модуль находится рядом с проектом).
Созданный автором TBCEditor редактор кода(по сути дальнейшее развитие TBCEditor под новым именем), множество возможностей кастомизации, множество файлов подсветки синтаксиса.
Данный контрол используется в редакторе Text Editor Pro.
Классический редактор кода для Delphi/Lazarus. Крайне стабильный редактор с большой историей. Из минусов - множество форков, сложно выбрать нужный. Уже встроен в Lazarus