(Gelöst) Exception-Klasse >> EConvertError<< "" in Linux

Antworten
Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

(Gelöst) Exception-Klasse >> EConvertError<< "" in Linux

Beitrag von Levario »

Hallo zusammen,

ich versuche ein kleines von mir erstelltes Programm von Windows nach Linux zu übertragen. Bei beiden Betriebssystemen habe ich ein und den selben Fehler Exception-Klasse >> EConvertError<< "" is an invalid integer Bei Adresse 51BB82. Bei Windows habe ich es wie folgt gelöst.

Code: Alles auswählen

wert := StrToIntDef(edtWert.Text, 0); 


Die Lösung funktioniert in allen Windows Versionen 7 / 8 / 8.1 und 10.

Linux scheint diese Lösung nicht zu akzeptieren. Der Fehler tritt immer auf bei einem Edit Feld und einer onchange Ereignis, wenn das Edit Feld leer ist. Selbst wenn ich die Zahl makiere und direkt durch eine Zahl ersetze ist Linux hier so schnell und wirft einen Error s.o.

Hinweis: Der Fehler tritt nur in der IDE selber auf, beim ausführen unter Linux ist dann wieder alles ok! Wäre schön wenn man das umgehen könnte ohne den debugger abzuschalten.

Wäre über Hilfe und Anregung dankbar!
Zuletzt geändert von Levario am So 20. Sep 2015, 13:00, insgesamt 1-mal geändert.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Exception-Klasse >> EConvertError<< "" in Linux

Beitrag von theo »

Ich kann das Problem nicht nachstellen auf Lazarus 1.5 r49083M FPC 3.1.1 x86_64-linux-gtk 2
Zeige doch mal den vollständigen Code.

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: Exception-Klasse >> EConvertError<< "" in Linux

Beitrag von Levario »

theo hat geschrieben:Ich kann das Problem nicht nachstellen auf Lazarus 1.5 r49083M FPC 3.1.1 x86_64-linux-gtk 2
Zeige doch mal den vollständigen Code.


Danke für die schnelle Antwort:
Zu meinem System Linux Ubuntu 12.04.05 64Bit und Lazarus 1.4.2

Code: Alles auswählen

 
procedure TForm1.edtPxWertChange(Sender: TObject);
var
  fsets : TFormatSettings;
  basiswert, pxwert : integer;
  emwert : real;
 
begin
 
  fsets.DecimalSeparator := '.';
  basiswert := StrToInt(edtBasiswert.Text);
  pxwert    := StrToIntDef(edtPxWert.Text, 0);
 
  emwert  := pxwert / basiswert;
 
  emwert  := emwert * 1000;
  emwert  := Round(emwert);
  emwert  := emwert / 1000;
 
  edtEmWert.Text := FloatToStr(emwert, fsets);
 
end;     
 


Der Fehler tritt nur in der IDE auf nachdem ich den Start Button gedruckt habe, kann ich einen Wert berechnen, bei der Eingabe des zweiten Wertes kommt der Fehler. Ausserhalb der IDE funktioniert es in Linux fehlerfrei. Über Lösungen und Anregungen wäre ich nachwievor dankbar :).
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Exception-Klasse >> EConvertError<< "" in Linux

Beitrag von theo »

Glaubst du nicht, dass das Problem eher in StrToInt(edtBasiswert.Text) entsteht?
StrToIntDef sollte mMn keinen ConverError schmeißen.

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: Exception-Klasse >> EConvertError<< "" in Linux

Beitrag von Levario »

Hi nein,

der Basiswert ist, wenn nichts eigegeben ist immer mit 16 definiert im edtBasiswert.Text := 16. Das Problem hat sich erledigt, ich habe den Code nochmal neu eingetippt und er funktioniert. Der Code den ich von Windows übernommen habe, verursacht den Fehler nachwievor. Problem ist also etwas unschön gelöst.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Antworten