AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler abfangen aber wie ?

Ein Thema von ACID-1 · begonnen am 25. Sep 2004 · letzter Beitrag vom 25. Sep 2004
Antwort Antwort
ACID-1

Registriert seit: 25. Sep 2004
3 Beiträge
 
#1

Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 07:29

Question
Hi, habe da ein kleines Problem. Bin neuling bei Delphi und möchte mein erstes Programm schreiben aber es klappt nicht so wie ich es möchte.

Ich habe 4 Editfelder wo der Benutzer aber nur zwei Ausfüllen braucht und die restlichen zwei werden berechnet. Die Auswahl welche zwei Ausgefüllt werden sollen ist dem Benutzer überlassen. Wenn ich nun das Programm starte und Ein Editfeld leer lasse stürzt das Programm ab. Könnte mir jemand bitte sagen wie ich solche fehler allgemein abfange, eine genau beschreibung würde mir sehr weiterhelfen.
  Mit Zitat antworten Zitat
BKempf

Registriert seit: 1. Jun 2004
103 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 07:52
Delphi-Quellcode:
try
  // Der Code, bei dem es krachen könnte
except
  // Das, was bei einer Exception passieren soll
end;
Als Ursache für den konkreten Fehler vermute ich ein StrToInt oder was ähnliches, dem ein leerer String (z.B. Edit2.Text='', da noch nichts eingetragen wurde) übergeben wurde.

Edit: Tippfehler korrigiert.
The problem with troubleshooting is that sometimes the trouble shoots back.
  Mit Zitat antworten Zitat
ipworks

Registriert seit: 27. Jul 2004
65 Beiträge
 
#3

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 08:16
Hallo siehe das Beispiel von BKempf.
Damit hast Du das Grundgerüst.

Nun kannst Du entweder alle Exceptions abfangen, wie bei BKempf geschieben,oder du behandelst unterschiedliche Exceptions mit unterschiedlichen Routinenen:

Delphi-Quellcode:
try
try
  // Der Code, bei dem es krachen könnte
except on EConvertError do //für Konvertierungsfehler
  begin
  // Bsp: aaaa ist kein Integer
  end;
end;

except //für alle anderen Exceptions
  begin
  // Das, was bei einer Exception passieren soll
  end;
end;
Im Zweifel setz' doch mal den Code hier rein.
Viel Spass.
Peter
Peter
  Mit Zitat antworten Zitat
ACID-1

Registriert seit: 25. Sep 2004
3 Beiträge
 
#4

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 08:46
Habe es mit eurer erklärung versucht, aber trotzdem bekomme ich die Fehlermeldung. Hier ist mein derzeitiger quellcode, könnt ihr mir sagen woran es liegt.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ActnList;

type
  TForm1 = class(TForm)
    LOHM: TLabel;
    EOHM1: TEdit;
    Label2: TLabel;
    EWATT1: TEdit;
    EVOLT1: TEdit;
    START1: TButton;
    EAMPER1: TEdit;
    LSTROM1: TLabel;
    LSPANNUNG1: TLabel;
    procedure START1Click(Sender: TObject);
    
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.START1Click(Sender: TObject);
Var AOHM1,AWATT1,U1,I1,ohmges,wattges,uges,iges:real;
Var Watttest1,Ohmtest1,Utest1,Itest1:real;
begin
try
AOHM1:=strtofloat(EOHM1.Text);
except on EConvertError do
begin
AOHM1:=0;
end;
end;
try
AWATT1:=strtofloat(EWATT1.Text);
except on EConvertError do
begin
AWATT1:=0;
end;
end;
try
U1:=strtofloat(EVOLT1.Text);
except on EConvertError do
begin
U1:=0
end;
end;
try
I1:=strtofloat(EAMPER1.Text);
except on EConvertError do
begin
I1:=0;
end;
end;




  //Eingabe




  //Prüfen

  If AOHM1<>0 then

    IF AWATT1<>0 then
      uges:=sqrt(AOHM1*AWATT1);
      iges:=sqrt(AOHM1/AWATT1);
    IF U1<>0 then
      wattges:=(U1*U1)/AOHM1;
      iges:=sqrt(AOHM1/AWATT1);
    IF I1<>0 then
      wattges:=(I1*I1)*AOHM1;
      uges:=sqrt(AOHM1*AWATT1);
    




//Ausgabe
EVOLT1.Text:=floattostr(uges);
EAMPER1.Text:=floattostr(iges);
  end;



end.
[edit=Admin]Hallo und herzlich Willkommen in der Delphi-PRAXiS. Ich habe Deinen Quellcode in sog. Delphi-Tags gesetzt: [delphi]...[/delphi]. Bitte künftig aufgrund der Übersichtlichkiet selber machen. Danke. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
ipworks

Registriert seit: 27. Jul 2004
65 Beiträge
 
#5

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 09:41
Vergleiche jenes mit deiner Routine

Delphi-Quellcode:
procedure TForm1.START1Click(Sender: TObject);
var
AOHM1,AWATT1,U1,I1,ohmges,wattges,uges,iges:Extended;
Watttest1,Ohmtest1,Utest1,Itest1:Extended;
begin
  AOHM1:=StrToFloatDef(EOHM1.Text,0); //falls Fehler stellt StrtoFloatDef automatisch das Ergebnis 0
  AWATT1:=StrToFloatDef(EWATT1.Text,0);
  U1:=StrToFloatDef(EVOLT1.Text,0);
  I1:=StrToFloatDef(EAMPER1,0);

  if AOHM1<>0 then begin
    if AWATT1<>0 then begin
      uges:=sqrt(AOHM1*AWATT1);
      iges:=sqrt(AOHM1/AWATT1);
      end;
    if U1<>0 then begin
      wattges:=(U1*U1)/AOHM1;
      iges:=sqrt(AOHM1/AWATT1);
      end;
    if I1<>0 then begin
      wattges:=(I1*I1)*AOHM1;
      uges:=sqrt(AOHM1*AWATT1);
      end;
  end;

  //Ausgabe
  EVOLT1.Text:=floattostr(uges);
  EAMPER1.Text:=floattostr(iges);
end;
cu
Peter
Peter
  Mit Zitat antworten Zitat
ACID-1

Registriert seit: 25. Sep 2004
3 Beiträge
 
#6

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 10:00
Tausend Dank für die hilfe, hat super funktioniert. Werde mir mal strtofloatdef genauer anschauen. Aber warum hat es nicht mit try und except funktioniert?
  Mit Zitat antworten Zitat
ipworks

Registriert seit: 27. Jul 2004
65 Beiträge
 
#7

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 10:07
Prüfe doch mal deine if...then routinen.
Da fehlen z.B. einige begin und end .
Noch so ein Tip.
Achte auf die Syntax und die Einrückungen. Ansonsten wird's doch sehr unübersichtlich.
mfg
Peter
Peter
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Fehler abfangen aber wie ?

  Alt 25. Sep 2004, 10:19
Zitat von ACID-1:
Aber warum hat es nicht mit try und except funktioniert?
Auch wenn du mit try ... except - Blöcken arbeitest, werden in der Entwicklungsumgebung die Fehler angezeigt. Erst wenn du das Programm nicht mehr aus der IDE heraus startest, sondern durch ausühren der Ausgabedatei, werden die Fehlermeldungen nicht mehr angezeigt ...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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