Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi-Fehlermeldungen unterdrücken im Einzelschrittmodus F8 (https://www.delphipraxis.net/12108-delphi-fehlermeldungen-unterdruecken-im-einzelschrittmodus-f8.html)

eddy 20. Nov 2003 17:41


Delphi-Fehlermeldungen unterdrücken im Einzelschrittmodus F8
 
Hallo Leute,

ich hab's satt. Jedesmal bekomme ich eine Fehlermeldung, wenn ich im Einzelschrittmodus (F7, F8)oder beim Durchlauf mit (F4, F9) in einer mit nachfolgenden Befehlsfolge den Programmlauf kontrolliere:

Code:
    //....
    try
      fx := Tab.FieldByName('Fax').AsString;    // Fax
    except
      fx := '';
    end;
    //....
Sinn der Befehlsfolge: wenn das Feld 'Fax' in der Quelldatei (Tab) existiert, wird der Inhalt des Feldes meiner Variablen fx zugewiesen, anderenfalls wird über except während der Laufzeit eine Fehlermeldung verhindert.

Gibt es in Delphi5 irgendwo eine Stelle, in der ich nur einen Haken machen muß, damit ich im Testmodus nicht jedesmal einen Exception auf den Bildschirm geknallt bekomme?

mfg
eddy

choose 20. Nov 2003 18:06

Re: Delphi-Fehlermeldungen unterdrücken im Einzelschrittmodu
 
Hallo eddy,

Du kannst unter Tools|Debugger Options...|Language Exceptions|Stop on Delphi Exceptions die Meldung innerhalb der IDE abstellen. Achtung, beim Step über eine Zeile, die eine Exception auslöst, wird der integrierte Debugger verlassen. Für diese Fälle solltest Du einen Breakpoint in den Except-Block platzieren.

Zitat:

Zitat von eddy
[...]wenn das Feld 'Fax' in der Quelldatei (Tab) existiert, wird der Inhalt des Feldes meiner Variablen fx zugewiesen, anderenfalls wird [...] eine Fehlermeldung verhindert.

Noch ein Tipp: Du solltest Exceptions vermeiden, wenn es sich anders ausdrücken lässt und Du die Exception nicht weiter verarbeiten willst, um die Übersicht zu wahren und Deine Intention zu verdeutlichen. In Deinem Fall sollte ein Blick in die OH unter FindField helfen, oder schreibst Du auch Funktionen dieser Art?
Delphi-Quellcode:
try
  Foo(AParam div AnotherParam);
except
  Bar(AParam);
end;

eddy 20. Nov 2003 21:46

Re: Delphi-Fehlermeldungen unterdrücken im Einzelschrittmodu
 
Hallo choose,

vielen Dank für den Tip mit FindField.

Scheint ja auch so eine Funktion zu sein, die kaum einer kennt. Google lieferte bei "FindField Delphi" nur einige wenige Einträge im deutschsprachigen Bereich (glücklicherweise steht auf den russischen Seiten der Quelltext nicht in Russisch da).

Zur Anwendung:
Code:
var
  fld : TField;
begin
  // ....
  fld := Tab.FindField('Fax');
  if Assigned(fld) and (fld.FieldNo > 0)
      then fx := ''
      else fx := fld.Value;
  // ....
Die Abfrage
Code:
if Assigned(fld)  // also ohne: and (fld.FieldNo > 0)
war ebenso funktionsfähig.

Von der Verwendung von
Code:
if fld = nil then ....
rate ich ab, da diese Abfrage bei vorhandenen aber leeren Felder and der Stelle
Code:
else fx := fld.Value
zu einem Exception führte (zumindest in meinem Beispiel).
Statt fld.Value kann natürlich auch fld.AsString verwendet werden, man muß aber mehr ändern, wenn sich der Datentyp ändert.

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz