Cita:
Empezado por jhonalone
Muchas gracias. Dani.
Espero que la versión que hayas bajado sea la última.
Utilizo Delphi 11.0.
Algunos de los permisos nuevos, los he tenido que declarar en el Manifest directamente, porque no aparecen en la lista de Project>Options>Uses Permissions
La última versión funciona correctamente.
Archivo Adjunto 4120
Ahora tengo un problema nuevo: como el terminal (Android 13) tarda en encontrar los dispositivos, genera un error en el dispositivo de "PruebaBluetooth no responde" "Cerrar aplicación" "Esperar". Esto ocurren en Android 13, en otro terminal con Android 9 no ocurre. (También tarda un poco en detectar los dispositivos)
He desarrollado un simple programa para asegurarme de que el error depende de la espera y he confirmado que me salta el mismo error.
Código Delphi [-]
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.Controls.Presentation, FMX.StdCtrls, FMX.ListBox;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
begin
for I := 1 to 25
do begin
ComboBox1.Items.Add('Item Lento '+ I.ToString);
Sleep(1000);
end;
end;
end.
No sé como evitar el mensaje. Quizá abra un nuevo hilo para ver si alguien lo ha resuelto.
Un efusivo saludo.
|
Hola estimado... quizás eso se resuelva metiendo esa tarea "pesada" a un hilo en segundo plano evitando así que durante la tarea se te "congele" el hilo principal y el sistema operativo te indique que la app no responde.
Prueba algo como esto:
Código Delphi
[-]
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.Controls.Presentation, FMX.StdCtrls, FMX.ListBox;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
ThreadSegPlano: TThread;
begin
ThreadSegPlano:= TThread.CreateAnonymousThread(
procedure
var
I : Integer; begin
for I := 1 to 25 do
begin
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
ComboBox1.Items.Add('Item Lento '+ I.ToString);
end);
Sleep(1000); end;
end);
ThreadSegPlano.FreeOnTerminate:= True; ThreadSegPlano.Start;
end;
end.
Considero que en tu caso deberás meter el código de la búsqueda en un hilo en segundo plano pero no te olvides de hacer el synchronize a los objetos visuales...
Resumen para usar un hilo (Thread):
Código Delphi
[-]
procedure BtnClick(Sender: TObject);
var
Thread: TThread; begin
Thread:= TThread.CreateAnonymousThread(
procedure
begin
TareaPesada;
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
end);
end);
Thread.FreeOnTerminate:= True;
Thread.Start;
end;
Saludos cordiales!