除了黑屏,我的应用程序什么都没显示

时间:2014-05-22 12:48:08

标签: android delphi firemonkey freeze delphi-xe5

Hy,我的第一个Android应用程序根据用户提供的密钥生成一个数字,因此它有2个编辑框和一些代码。它正在我测试过的所有Android 4.x设备上工作,除了那个人的平板电脑我做了申请。它没有显示任何东西,只是一个黑屏。它是 Android 4.2 ,Cortex A7,1,2GHz QUAD Core平板电脑。

我在主窗口的“OnPaint”事件中放置了一个ShowMessage对话框并在运行时显示它,我点击“确定”,但屏幕保持黑色,大约一分钟左右如果我触摸“返回”我得到“应用程序没有响应”。在我的Android手机上,如果我运行我的应用程序,它会一直显示ShowMessage对话框,因为主窗口被重绘,但它运行正常。

如果我没有错误,我不知道如何找到问题。

我正在开发 Delphi XE5 Update 2 。谢谢,代码如下:

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  IdGlobal, IdHash, IdHashMessageDigest, FMX.Edit;

type
  TMainWindow = class(TForm)
    Label1Key: TLabel;
    Key: TEdit;
    numar: TEdit;
    LabelNumber: TLabel;
    PanelCentrare: TPanel;
    procedure KeyChange(Sender: TObject);
    procedure codChange(Sender: TObject);
    procedure KeyTyping(Sender: TObject);
    procedure MessagePaint(Sender: TObject; Canvas: TCanvas;
      const ARect: TRectF);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function MD5(S: String): String; overload;

  var
  MainWindow: TMainWindow;

implementation

{$R *.fmx}

function MD5(S: String): String;
begin
  with TIdHashMessageDigest5.Create do
  begin
    Result := AnsiLowerCase(HashStringAsHex(S));
    Free;
  end;
end;

procedure TMainWindow.KeyChange(Sender: TObject);
var personalkey, md5string,ascii :string;
begin
  personalkey := Uppercase(key.Text);
  if length(personalkey) = 6 then
    begin
      md5string:= Uppercase(MD5(lowercase(personalkey)));
      ascii := inttostr(ord(md5string[1]))+inttostr(ord(md5string[2]))+inttostr(ord(md5string[3]));
      numar.Text := ascii;
     end
end;


procedure TMainWindow.KeyTyping(Sender: TObject);
begin
  key.MaxLength := 6;
end;

procedure TMainWindow.MessagePaint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  //ShowMessage('Window Paint.');
end;

procedure TMainWindow.codChange(Sender: TObject);
var  personalkey, md5string, ascii :string;
begin
  personalkey := Uppercase(key.Text);
  if length(personalkey) = 6 then
        begin
            md5string:= Uppercase(MD5(lowercase(personalkey)));
            ascii := inttostr(ord(md5string[1]))+inttostr(ord(md5string[2]))+inttostr(ord(md5string[3]));
            numar.Text := ascii;
    end
end;

end.

0 个答案:

没有答案