Autor Beitrag
wacker
Hält's aus hier
Beiträge: 14

win XP, win vista Ultimate, ubuntu
CodeGear 2007 Enterprise (testversion), delphi 5
BeitragVerfasst: Mo 24.09.07 16:47 
hallöle
ich bin frischer delphi progger und hab ein problemchen
hier ist meins programm
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Edit6: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,x1,x2,disk:Double;
begin
    //convert
      a := StrToFloat(Edit1.Text);
      b := StrToFloat(Edit2.Text);
      c := StrToFloat(Edit3.Text);
    //calc
    if a=0 then ShowMessage('Die Division durch Null ist nicht erlaubt!')
      else    //wenn keine probleme dann weiter im text
        disk := b*b - 4*a*c;
        //gibts ne lösung?
        //fall 1: keine lösung
        if  disk < 0
          then Edit6.Text:= 'keine lösung!'
        //fall 2. eine lösung
        else if disk = 0
                then    //einzige Lösung berechnen
                  begin
                  x1 := - b / (2*a);
                  Edit6.Text:=FloatToStr(x1);
                  end
        else    // fall 3: 2 lösungen
                  begin
                  x1 := (- b + sqrt(disk)) / (2*a);
                  x2 := (- b - sqrt(disk)) / (2*a);
                  Edit4.Text:= FloatToStr(x1);
                  Edit5.Text:= FloatToStr(x2);
                  end;
        end;            

end.

wenn ich im feld für a eine 0 stehen habe kriege ich meine showmessage fehlermeldung wie gewollt
blöderweise gibt mir delphi dann auch noch eine fehlermeldung aus von wegen "floating point division by zero"
was habe ich falsch gemacht bzw wie kann ich diese zweite meldung unterdrücken?

danke im voraus
wacker
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 24.09.07 16:50 
Da fehlt ein begin...end in dem großen Else-Zweig nach deinem Showmessage. Denn der ganze folgende Code soll ja nur dann ausgeführt werden, nicht nur die Zuweisung an disk. ;-)

Edit: Ups, vergessen: :welcome: im Forum!

_________________
We are, we were and will not be.
wacker Threadstarter
Hält's aus hier
Beiträge: 14

win XP, win vista Ultimate, ubuntu
CodeGear 2007 Enterprise (testversion), delphi 5
BeitragVerfasst: Mo 24.09.07 17:00 
vielen dank gleich 2 mal! :)
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mo 24.09.07 20:00 
Hi,

fuer solche Faelle kann ich nur einen Code-Formatter empfehlen, dann haettest Du gleich gesehen, dass das was nicht stimmt, denn es waere nur die erste Zeile eingerueckt worden.

twm