Einzelnen Beitrag anzeigen

juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Firemonkey Segmentation fault (11) mit TEdit

  Alt 6. Jul 2019, 10:16
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€).
Miniaturansicht angehängter Grafiken
bild1.jpg   bild2.jpg  
Jürgen Linder

Geändert von juelin ( 6. Jul 2019 um 10:21 Uhr)
  Mit Zitat antworten Zitat