Autor Beitrag
tahnee
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 19:10 
hallo,
ich hab folgenden quelltext geschrieben:
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:
procedure TForm1.extremwerte;
var xm1, xm2, y, y1,y2, p, q:extended;
begin
 y2:=6*x3*xm1+2*x2;
 y:=x3*power(xm1,3)+x2*power(xm1,2)+x1*xm1+x0;
 y1:=x3*power(xm2,3)+x2*power(xm2,2)+x1*xm2+x0;
 p:=(2*x2)/(3*x3);
 p:=round(p*100)/100;
 q:=x1/(3*x3);
 q:=round(q*100)/100;
 if (p/2)*(p/2)-q=0
 then
     begin xm1:=-(p/2);

           if y2<0
           then begin maxx_edt.text:=floattostrf(xm1,fffixed,10,3);
                      maxy_edt.text:=floattostrf(y,fffixed,10,3);
                end
           else begin minx_edt.text:=floattostrf(xm1,fffixed,10,3);
                      miny_edt.text:=floattostrf(y,fffixed,10,3);
                end;
    end
 else

   if (p/2)*(p/2)-q<0
   then begin minx_edt.text:='';
              maxx_edt.text:='';
        end
   else
      begin
      xm1:=-(p/2)+sqrt((p/2)*(p/2)-q);
      xm1:=round(xm1*100)/100;
      xm2:=-(p/2)-sqrt((p/2)*(p/2)-q);
      xm2:=round(xm2*100)/100;
      if y2<0
      then begin maxx_edt.text:=floattostrf(xm1,fffixed,10,3);
                 maxy_edt.text:=floattostrf(y,fffixed,10,3);
                 minx_edt.text:=floattostrf(xm2,fffixed,10,3);
                 miny_edt.text:=floattostrf(y1,fffixed,10,3);
           end
      else begin maxx_edt.text:=floattostrf(xm2,fffixed,10,3);
                 maxy_edt.text:=floattostrf(y1,fffixed,10,3);
                 minx_edt.text:=floattostrf(xm1,fffixed,10,3);
                 miny_edt.text:=floattostrf(y,fffixed,10,3);
           end;
      end;
end;



Ich erhalte immer die Fehlermeldung ungültige Gleitkommaoperation.Habs schon mit runden probiert, aber das hat auch leider nicht funktioniert.Wäre wirklich toll, wenn mir jemand helfen könnte.Danke.

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.03.09 19:16 
Hallo und :welcome: hier im Forum!

Deinen Quelltext solltest du hier in Delphi-Tags setzen, sonst kann man den nur schwer überblicken, das hat jetzt user profile iconKha für dich erledigt:
ausblenden Quelltext
1:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAG4d7b645c281c2c5ab26ab5a2fcb5b6ec}</span></span>					


Wo genau tritt der Fehler denn auf? Hast du es einmal mit einem Haltepunkt und debuggen versucht?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 27.03.09 19:17 
user profile icontahnee hat folgendes geschrieben Zum zitierten Posting springen:
Ich erhalte immer die Fehlermeldung ungültige Gleitkommaoperation.
In welcher Zeile von dem (leicht verwirrenden :mrgreen: ) code bekommst du den Fehler?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 20:16 
Der Debugger verweist nur auf die Procedure, auf keine bestimmte Zeile...
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: Fr 27.03.09 20:32 
Hallo und :welcome: in der Entwickler-Ecke,

was mir so auffällt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var xm1, xm2, y, y1,y2, p, q:extended;
begin
  y2 := 6*x3*xm1+2*x2;
  y  := x3*power(xm1,3)+x2*power(xm1,2)+x1*xm1+x0;
  y1 := x3*power(xm2,3)+x2*power(xm2,2)+x1*xm2+x0;
  // die markierten Variablen sind nicht initialisiert und können zufällige Werte haben

p:=(2*x2)/(3*x3); // ist sichergestellt, dass x3 ungleich Null ist?
q:=x1/(3*x3); // hier ebenso

_________________
We are, we were and will not be.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.03.09 20:38 
user profile icontahnee hat folgendes geschrieben Zum zitierten Posting springen:
Der Debugger verweist nur auf die Procedure, auf keine bestimmte Zeile...
Es geht nicht darum nach dem Fehler zu schauen wo du landest, sondern es geht darum vorher zu schauen wann er auftritt.

Setz einen Haltepunkt (F5) auf die erste Quelltextzeile in der Prozedur, dann führ das Programm aus (F9) und gehe dann zeilenweise durch das Programm, wenn Delphi beim Haltepunkt anhält (F8 ).
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 20:40 
x3 ist auf keinen Fall null.
Habe den Quelltext so umgeschrieben, dass y, y1 und y2 erst später ausgerechnet werden, wenn uach die Variablen xm1, xm2 berechnet werden.Kommt trotzdem die gleiche Fehlermeldung...
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 27.03.09 20:44 
:welcome: im Forum!
user profile iconGausi hat ja bereits die wesentlichen Fehler aufgedeckt.
Bist du nun einmal, wie user profile iconjaenicke beschrieben hat, durch den Quelltext gesteppt und hast die einzelnen Werte überprüft? Die Wurzeln werde auch niemals kleiner Null? :zwinker:

BTW: Ich persönlich finde deine Quelltext-Formatierung noch verbesserungswürdig...
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 20:50 
Ja, hab ich gemacht, hat dabei iweder aber nur die procedure an sich angezeigt.
x3 kann nicht null werden (somit keine Division durch null) und die Wurzeln überprüf ich ja vorher...

if (p/2)*(p/2)-q=0
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 27.03.09 20:53 
user profile icontahnee hat folgendes geschrieben Zum zitierten Posting springen:
und die Wurzeln überprüf ich ja vorher...
if (p/2)*(p/2)-q=0

Ja, auf gleich Null, das ist auch legitim. Aber nicht darauf, ob sie negativ sind. :mrgreen:

Edit: Seh gerade, stimmt nicht, was ich erzählt habe. Du überprüfst in der Tat doch. :oops:

Edit2: Wenn du den Haltepunkt hinter das erste begin setzt und anschließend mit F7 durchsteppst, wird der Compiler mit Sicherheit nicht wieder an den Anfang der Prozedur springen. :gruebel:
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 21:17 
Springt zu end. und application.initialize oder zu dem Teil wo ich die Prozeudr
if x3<>0 then begin
horner();
extremwerte();
wendepunkt();
end;
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 27.03.09 21:23 
1) Klick in die Zeile in der folgendes steht:  y2:=6*x3*xm1+2*x2;
2) Drücke F5 (Breakpoint sollte links erscheinen)
3) Drücke F4 und rufe deine Prozedur auf (das Programm sollte nun bis zu dieser Zeile laufen und anschließend in den Debugmodus wechseln)
4) Steppe mit F7 solange durch die Prozdur bis du an der Fehlerstelle angekommen bist

:zwinker:
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 21:43 
Der springt immer nur zu der Stelle an der ich die Prozedur aufrufe...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.03.09 21:48 
Hast du eine alte Delphiversion? Welche benutzt du? Dann kann ich das genau für die Version zeigen.
tahnee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 27.03.09 21:51 
delphi 7