Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема с использованием winAPI.windows и VCL в многоустройственном приложении Delphi 11.3 на платформе Android

Delphi , ОС и Железо , Windows

В статье будет рассмотрена проблема, связанная с использованием winAPI.windows и VCL в многоустройственном приложении Delphi 11.3 на платформе Android. Мы рассмотрим причину возникновения ошибки и предложим решение для устранения этой проблемы.

Причина проблемы

Проблема возникает из-за того, что Windows и Android - это разные операционные системы, и WinAPI доступен только на Windows. Кроме того, фреймворк VCL поддерживает только Windows, а для платформенных единиц, таких как WinAPI.Windows, вам понадобятся директивы компилятора, чтобы включать их только на определенной платформе.

Решение проблемы

Чтобы решить эту проблему, вам нужно удалить winAPI.windows и VCL из списка используемых единиц в вашем многоустройственном приложении Delphi 11.3. Вместо этого, вы можете использовать кроссплатформенные единицы, которые поддерживаются как на Windows, так и на Android. Например, вы можете использовать единицы из FireMonkey (FMX), которые являются кроссплатформенным фреймворком, входящим в состав Delphi.

Ниже приведен пример кода на Object Pascal, демонстрирующий использование FMX вместо VCL:

unit Unit1;

interface

uses
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  FMX.Types,
  FMX.Controls,
  FMX.Forms,
  FMX.Graphics;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Ваш код здесь
end;

end.

Обратите внимание, что в списке используемых единиц теперь есть FMX.Types, FMX.Controls, FMX.Forms и FMX.Graphics вместо VCL.

Альтернативное решение

Если вы все же хотите использовать winAPI.windows и VCL в своем многоустройственном приложении, вам придется использовать директивы компилятора, чтобы включать их только на платформе Windows. Вы можете сделать это, используя директиву {$IFDEF} для проверки текущей платформы. Например:

unit Unit1;

interface

uses
  System.SysUtils,
  System.Variants,
  System.Classes;

{$IFDEF WINDOWS}
  Winapi.Windows,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs;
{$ELSE}
  FMX.Types,
  FMX.Controls,
  FMX.Forms,
  FMX.Graphics;
{$ENDIF}

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Ваш код здесь
end;

end.

В этом примере, если определена директива WINDOWS (т.е. компиляция происходит на Windows), то включаются единицы WinAPI.Windows и VCL. В противном случае, включаются кроссплатформенные единицы FMX.

Заключение

В этой статье мы рассмотрели проблему, связанную с использованием winAPI.windows и VCL в многоустройственном приложении Delphi 11.3 на платформе Android. Мы обнаружили, что проблема возникает из-за того, что Windows и Android - это разные операционные системы, и WinAPI доступен только на Windows. Чтобы решить эту проблему, мы предложили удалить winAPI.windows и VCL из списка используемых единиц и использовать кроссплатформенные единицы, такие как FMX. Кроме того, мы предложили альтернативное решение, использующее директивы компилятора для включения winAPI.windows и VCL только на платформе Windows.

Создано по материалам из источника по ссылке.

Статья описывает проблему использования winAPI.windows и VCL в многоустройственном приложении Delphi 11.3 на платформе Android и предлагает решения для ее устранения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 10:00:29/0.0060780048370361/0