![]() |
Firemonkey Segmentation fault (11) mit TEdit
Liste der Anhänge anzeigen (Anzahl: 2)
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:
Danke und Gruß
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. Jürgen PS: Wenn jemand mir wirklich helfen kann bin ich bereit zu zahlen (mindestens 100€). |
AW: Firemonkey Segmentation fault (11) mit TEdit
Und wie sieht dazu der Stacktrace aus? Wo landest du denn im Quelltext im Debugger?
|
AW: Firemonkey Segmentation fault (11) mit TEdit
Wenn etwas auf dem PC funktioniert und auf dem Smartfone nicht, liegt es bei FMX sehr oft daran, das auf Strings wie in "C" dort von 0..Length-1
und nicht wie in Delphi früher von 1..Length zu gegriffen wird! 1. daher bekomme ich bei sowas Bauchschmerzen: ..."h1:=StrLen(PChar(heute));"... 2. Wenn man Tag, Monat, Jahr haben will, geht besser man nicht über String&Positions Gewurschtel... "DecodeDate" wäre hier das Stichwort 3. die ganzen eigenen "var" Globalvariablen gehören wenn es schon damit sein soll unter "public" in die Formularklasse |
AW: Firemonkey Segmentation fault (11) mit TEdit
Liste der Anhänge anzeigen (Anzahl: 3)
Der Stacktrace und Haltepunkt siehe Anhang
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz