Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit Exception (https://www.delphipraxis.net/754-problem-mit-exception.html)

Hansa 2. Sep 2002 11:01


Problem mit Exception
 
Hallo Leute,

wo ist hier ein Fehler:

procedure Tform1.Edit1Exit(Sender: TObject);
var WGnr : integer;
begin
WGnr := 0;
try
WGnr := StrToInt (Edit1.text)
except
ShowMessage ('fehlerhafte Eingabe !');
Edit1.SetFocus;
end;
end;

Trotz try..except - Block kommt Fehlermeldung EconvertError und das Programm verabschiedet sich. Und zwar an der Stelle StrToInt.

Gruß
Hansa

Christian Seehase 2. Sep 2002 11:35

Moin Hansa,

gehe ich recht in der Annahme, dass der Fehler nur bei Start aus der IDE nicht abgefangen wird?

Wenn ja, müsstest Du nur unter Tools\Debugger Optionen\Sprach-Exceptions den Haken bei "Bei Delphi Exceptions-stoppen" wegnehmen, um das zu verhindern.

Hansa 2. Sep 2002 11:43

Hallo Christian,

muß weeeeeg, das muß es sein, habe bei Compilereinst. gesucht. Taucht nur in IDE auf. Mach den Haken heute mittag weg.

Gruß
Hansa

Hansa 2. Sep 2002 16:54

Hi Chris,

Haken ist weg, das wars. In keinem Tutorial wurde darauf hingewiesen oder so, habe zumindest nichts gesehen.

Da sieht man mal wieder, wie wichtig solche Foren für jeden Programmierer sind, sofern nicht nur Egoisten dabei sind.

War ja nicht viel, aber ich hätte noch 2 Tage suchen müssen.

Gruß nach Hamburg
Hansa

Hansa 2. Sep 2002 18:10

Das war doch zu schnell. Habe die Prozedur global gemacht :

procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
Messagedlg('Fehler : '+ E.Message, mterror,[mbok],0);
end;

procedure TForm1.FormCreate(Sender: TObject);
BEGIN
Application.OnException := AppException;
end;

Für ein einzelnes Feld zu prüfen, habe ich im Except-Block mit Edit1.SetFocus den Cursor gezwungen, solange in dem Feld zu bleiben, bis ein plausibler Wert eingetragen war.

Global geht das aber nicht. Vielmehr muß ich jetzt den Cursor in das entsprechende Feld 'zurückschicken', welches den Fehler produziert hat, egal welches das war! Wie mach ich jetzt das?

Gruß
Hansa


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 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