项目场景:

提示:这里简述项目相关背景:

如题,题主基于RAD Studio 11.0,将远古时候XE编的windows计算器精简了下,加减乘除四则运算的部分用FireMonkey重新编译Android 64bit包,经测试在蓝蝶 BlueStacks虚拟机和华为 Mate 40 Pro运行正常,话不多说,上码…


解决方案:

提示:这里填写该问题的具体解决方案:

  1. 新建工程

Delphi 11.0 -> File -> New -> Multi-Device Application - Delphi
在这里插入图片描述
2. 拖放控件:

20个Button,1个Label,1个Edit、1个Timer

在这里插入图片描述
3. 完整源码

unit Unit1;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Edit;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    num: array[1..20] of Char; // 计算器
    i: Integer; //
    a, b, s: Extended; //
    z: Char; //
 
  end;
 
var
  Form1: TForm1;
  time1: TTime; //
  num: array[1..20] of Char; // 计算器
  i: Integer; //
  a, b, s: Extended; //
  z: Char; //
 
implementation
 
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}
 
procedure TForm1.Button10Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '5';
  num[i] := '5';
  i := i + 1;
end;
 
procedure TForm1.Button11Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '6';
  num[i] := '6';
  i := i + 1;
end;
 
procedure TForm1.Button12Click(Sender: TObject);
begin
  a := strtofloat(Edit1.Text);
  z := '*';
  i := 1;
end;
 
procedure TForm1.Button13Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '1';
  num[i] := '1';
  i := i + 1;
end;
 
procedure TForm1.Button14Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '2';
  num[i] := '2';
  i := i + 1;
end;
 
procedure TForm1.Button15Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '3';
  num[i] := '3';
  i := i + 1;
end;
 
procedure TForm1.Button16Click(Sender: TObject);
begin
  a := strtofloat(Edit1.Text);
  z := '/';
  i := 1;
end;
 
procedure TForm1.Button17Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '0';
  num[i] := '0';
  i := i + 1;
end;
 
procedure TForm1.Button18Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '.';
end;
 
procedure TForm1.Button19Click(Sender: TObject);
var
  X: Extended;
begin
  X := strtofloat(Edit1.Text);
  X := -X;
  Edit1.Text := FloatToStr(X);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  j: Integer;
begin
  Edit1.Text := '';
  i := i - 1;
  for j := 1 to i - 1 do
    Edit1.Text := Edit1.Text + num[j];
end;
 
procedure TForm1.Button20Click(Sender: TObject);
var
  j: Integer;
begin
  b := strtofloat(Edit1.Text);
  case z of
    '+':
      s := a + b;
    '-':
      s := a - b;
    '*':
      s := a * b;
    '/':
      s := a / b;
  end;
  Edit1.Text := FloatToStr(s);
  i := 1;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text := '';
  i := 1;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  a := strtofloat(Edit1.Text);
  z := '+';
  i := 1;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '7';
  num[i] := '7';
  i := i + 1;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '8';
  num[i] := '8';
  i := i + 1;
end;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '9';
  num[i] := '9';
  i := i + 1;
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
  a := strtofloat(Edit1.Text);
  z := '-';
  i := 1;
end;
 
procedure TForm1.Button9Click(Sender: TObject);
begin
  if i = 1 then
    Edit1.Text := '';
  Edit1.Text := Edit1.Text + '4';
  num[i] := '4';
  i := i + 1;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Text := '当前系统时间:' + DateTimeToStr(now);
end;
 
end.
  1. 运行截图
    5. 在这里插入图片描述
    配套Android SDK、NDK、AdoptopenJDK下载包:https://pan.baidu.com/s/1aJeTQTKSzICDqMl_XDGifg?pwd=2023

默认配置路径如下:01-SDK-64bit&32bit

打开 Delphi 11 笔者使用版本为XE 11.3 ;sdk 22 | 20;jdk 8.0.22
点击 Tools–Options…
在这里插入图片描述
然后点击 Deployment–SDK Manager–Add…
在这里插入图片描述
这里如果配置64位就选 Android 64-bit,如果配置32位就选 Android 32-bit
在这里插入图片描述
点击 Select an SDK version–Add New…
在这里插入图片描述
有警告图标的就是有问题的项,需要手动更新一下,点击每一行后面的…,仿照选择对应的路径

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
最后,添加好SDK即可
在这里插入图片描述
额外,需要提醒大家,SDK版本有许多,最好添加匹配的Android版本对应的SDK,如图
在这里插入图片描述
同时,添加SDK版本的时候最好是先32位,然后64位,逐次添加SDK,NDK,JDK,如图
在这里插入图片描述

完成配置
在这里插入图片描述
到此,环境配置就好了,大家按F9即可打包apk文件导入Android移动设备安装,ღ( ´・ᴗ・` )~~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐