Hallo Delphi Gemeinde,
muss Euch leider nochmal nerven. Ansonsten muss ich bis zum Forenday 21.9.2019 in Mannheim warten.
Habe das Programm vereinfacht. Nur noch 2 Edit (ohne Datenbank und sonstigen Schnick-Schnack).
Es sind nur 3 Routinen wichtig.
OnFormActivate (Edit1 wird frei gegeben)
Edit1OnKeyUp (Edit1 wird gesperrt und Edit2 wird frei gegeben)
Edot2OnKeyUp (edit2 wird gesperrt), aber da kommt das Programm ja nie hin.
Mein erstes Firmemonkey-Programm.
Im Emulator läuft alles prima.
Der Fehler tritt nur im Handy auf.
In Unit1 habe ich zwei Eingabefelder (Edit1 und Edit2).
Nach dem Start des Programmes hat Edit1 den Focus und die Handytastatur ist sichtbar.
Nun kann ich Text eingeben und mit ENTER abschliessen.
Danach hat Edit2 den Focus und die Handytastatur ist sichtbar.
Wenn ich jetzt auf der Handytastatur irgend ein Zeichen eingebe ritt der Fehler auf.
Aegmentation fault (11) (siehe Anhang).
Habe hier auch nichts gefunden wo weiter hilft.
Ich habe:
Windows 10
Delphi
Rad-Studio XE5
Handy Sony Xperia 10
Code:
Delphi-Quellcode:
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.Edit, DBAccess, MyAccess, Data.DB, MemDS, System.DateUtils;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject;
var Key: Word;
var KeyChar: Char;
Shift: TShiftState);
procedure Edit2KeyUp(Sender: TObject;
var Key: Word;
var KeyChar: Char;
Shift: TShiftState);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
var JaNein: word;
var Closestat: integer;
var abbruch: Boolean;
var mtasts: integer;
var mlauf: integer;
var mver: integer;
var mart: integer;
var Tag: integer;
var Monat: integer;
var Jahr: integer;
var BUser:
string;
var anzrec: Integer;
var FSatz:
string;
var sta: integer;
var sperr: integer;
var dcon: integer;
var user:
String;
var passwd:
String;
var benutzer:
string;
var superu:
string;
var name:
string;
var anzp: integer;
var SqlRet: Boolean;
var vorname:
string;
var nachname:
string;
var ialpha:
string;
var inummer: integer;
var inumkom: double;
var iart: integer;
var ilanmax: integer;
implementation
{$R *.fmx}
procedure TForm1.Edit1KeyUp(Sender: TObject;
var Key: Word;
var KeyChar: Char;
Shift: TShiftState);
begin
if mlauf = 1
then
begin
if ord(Key) = 13
then
begin
ialpha:=Edit1.Text;
Edit1.
ReadOnly:=True;
if ialpha <> '
'
then
begin
name:=ialpha;
anzp:=0;
mlauf:=2;
Edit2.
ReadOnly:=False;
Edit2.Text:='
';
Edit2.SetFocus;
end else begin
mlauf:=1;
Edit1.
ReadOnly:=False;
Edit1.Text:='
';
Edit1.SetFocus;
end;
end;
end;
end;
procedure TForm1.Edit2KeyUp(Sender: TObject;
var Key: Word;
var KeyChar: Char;
Shift: TShiftState);
begin
if mlauf = 2
then
begin
if ord(Key) = 13
then
begin
ialpha:=Edit2.Text;
Edit2.
ReadOnly:=True;
if ialpha <> '
'
then
begin
mlauf:=0;
end else begin
mlauf:=2;
Edit2.
ReadOnly:=False;
Edit2.Text:='
';
Edit2.SetFocus;
end;
end;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if sta = 1
then
begin
Form1.Caption:='
BVS Fahrdienst Version '+'
<'+BUser+'
>';
Closestat:=0;
mtasts:=1;
ialpha:='
';
inummer:=0;
inumkom:=0;
iart:=1;
mlauf:=0;
mver:=0;
sta:=2;
sperr:=1;
benutzer:='
';
Edit1.
ReadOnly:=True;
Edit2.
ReadOnly:=True;
mlauf:=1;
Edit1.
ReadOnly:=False;
Edit1.Text:='
';
Edit1.SetFocus;
end;
end;
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Form1.Cursor:=crDefault;
Action:=TCloseAction.caFree;
Form1.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
var heute:
string;
var h1: integer;
var h3:
string;
begin
Closestat:=0;
mtasts:=1;
ialpha:='
';
inummer:=0;
inumkom:=0;
iart:=1;
mlauf:=0;
BUser:='
unknown';
heute:=FormatDateTime('
DD.MM.YYYY',now);
h1:=StrLen(PChar(heute));
if (h1 = 10)
then
begin
h3:=Copy(heute, 1, 2);
Tag:=StrToInt(h3);
h3:=Copy(heute, 4, 2);
Monat:=StrToInt(h3);
h3:=Copy(heute, 7, 4);
Jahr:=StrToInt(h3);
end;
abbruch:=false;
sta:=1;
dcon:=0;
Form1.Caption:='
BVS Fahrdienst Version '+'
<'+BUser+'
>';
end;
end.
Danke und Gruß
Jürgen
PS: Wenn jemand mir wirklich helfen kann bin ich bereit zu zahlen (mindestens 100€).