![]() |
Ungültige Gleitkommaoperation bei Hausaufgabe
Hallo,
Ich bin neu hier im Forum und habe direkt ein Problem. Wir haben in Info als Hausaufgabe auf, ein Programm zur Lösung quadratischer Gleichungen zu programmieren. Mein Programm:
Delphi-Quellcode:
Fehler :
...
var p,q,l1,l2,v : real; procedure TForm1.BitBtn2Click(Sender: TObject); begin Close; end; procedure TForm1.BitBtn1Click(Sender: TObject); begin p:=StrToFloat(PEdit.Text); q:=StrToFloat(QEdit.Text); if sqrt((p/2)*(p/2)-q)<0 then begin LEdit.Text:='Keine Lösung'; end else if sqrt((p/2)*(p/2)-q)=0 then begin LEdit.Text:='1 Lösung'; l1:=-(p / 2) + sqrt((p/2)*(p/2) - q) end else begin LEdit.Text:='Zwei Lösungen'; l1:=-(p / 2) + sqrt((p/2)*(p/2) - q); l2:=-(p / 2) - sqrt((p/2)*(p/2) - q); end; L1Edit.Text:=FloatToStr(l1); L2Edit.Text:=FloatToStr(l2); end; end. Im Projekt1337.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung 'Ungültige Gleitkommaoperation'. Prozess wurde angehalten. ... Wo liegt das Problem? DANKE IM VORAUS!! |
Re: Programmierproblem
eventuell hier:
if sqrt((p/2)*(p/2)-q)<0 then soll wohl heißen if (p/2)*(p/2)-q < 0 then |
Re: Programmierproblem
1. Willkommen in der DP!
2. Der Titel "Programierproplem" ist eher schlecht gewählt.. Über 90% alle Threads in diesem Forum behandeln Programmierprobleme. 3. Wann tritt die Exception denn genau auf? Klick mal in die Zeile, die als erstes ausgeführt wird (also wohl diese Zeile: p:=StrToFloat(PEdit.Text);) und drück dann auf der Tastatur F5. Dann kompiliere und starte das Proghramm. Wenn das Programm an diese Stelel kommt, stoppt der Delphidebugger das Programm. Dann kannst du mit F7 immer eine Zeile weiterspringen. Das sollte helfen das Problem zu lokalisieren. EDIT: Fragen / Anregungen zur DP ist nebenbei auch das gaaanz Falsche Forum für die Frage: Zitat:
|
Re: Programmierproblem
Hallo Peter.
Erstmal herzlich Willkommen hier in der Delphi-PRAXiS. Wenn Du neu bist, dann hast Du ja auch erst vor ganz kurzem unsere Regeln abgesegnet. Da steht unter anderem drin, dass man doch bitte 1.) Das richtige Forum wählen sollte, 2.) einen Aussagekräftigen Titel für seine Frage wählen sollte und 3.) idealerweise Quellcode auch als solchen formatieren sollte. Wegen 1.) muss ich Deinen Beitrag erstmal in die richtige Sparte schieben. 2.) und 3.) korrigierst Du bitte selber: Du klickst rechts oben auf den 'Edit' - Knopf und änderst den Titel Deiner Frage bitte in etwas, das mit dem Inhalt zu tun hat. z.B. 'Ungültige Gleitkommaoperation bei Hausaufgabe' oder sowas, und dann legst Du bei der Gelegenheit auch noch bitte [ delphi ] [/ delphi ] - Tags (ohne die Leerzeichen freilich) um den geposteten Quellcode. Dann kann man den nämlich auch gescheit lesen und damit vielleicht auch noch helfen. Danke ;-) |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.
Ist kein Thema, was die DP als solche betrifft. |
Re: Ungültige Gleitkommaoperation bei Hausaufgabe
Was ist denn hier los ?
Delphi-Quellcode:
Schon direkt bei der "2." Zeile zeigt er mir einen Fehler:q:=StrToFloat(QEdit.Text); Variable 'v' wurde deklariert, aber in 'Unit1' nicht verwendet. Variable 'x' wurde deklariert, aber in 'Unit1' nicht verwendet. Aber in der Zeile steht doch überhaupt kein v oder x ? Im ganzen Programm habe ich diese Variablen nicht verwendet (oben bei Variablen ausgetragen). EDIT : Jetzt läuft das Programm, aber bringt falsche Ergebnisse. Sind meine Rechnungen richtig? |
Re: Ungültige Gleitkommaoperation bei Hausaufgabe
guckst du hier
Zitat:
|
Re: Ungültige Gleitkommaoperation bei Hausaufgabe
Ok, das v habe ich entfernt.
Es kommen trotzdem falsche Ergebnisse. |
Re: Ungültige Gleitkommaoperation bei Hausaufgabe
Das ist kein Fehler, sondern ein Hinweis, das du die variablen nicht verwendest. Der Fehler steht noch ne Zeile tiefer ;)
|
Re: Ungültige Gleitkommaoperation bei Hausaufgabe
Delphi-Quellcode:
Das ist mein aktuelles Programm und ich komme nicht drauf, was an der Zeilep:=StrToFloat(PEdit.Text); q:=StrToFloat(QEdit.Text); if ((p/2)*(p/2)-q)<0 then begin LEdit.Text:='Keine Lösung'; L1Edit.Text:=''; L2Edit.Text:=''; end else if ((p/2)*(p/2)-q)=0 then begin LEdit.Text:='1 Lösung'; l1:=-(p / 2) + sqrt((p/2)*(p/2) - q) end else begin LEdit.Text:='Zwei Lösungen'; l1:=-(p / 2) + sqrt((p/2)*(p/2) - q); l2:=-(p / 2) - sqrt((p/2)*(p/2) - q); end; L1Edit.Text:=FloatToStr(l1); L2Edit.Text:=FloatToStr(l2); end; end.
Delphi-Quellcode:
falsch sein soll...if ((p/2)*(p/2)-q)<0 then |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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