![]() |
Ungültige Gleitkommaoperation
Hallo Leute!
Dies ist mein erster Post, also gibt's gleich ne Noob-Frage ;) Wenn ich den Fehler 'Ungültige Gleitkommaoperation' erhalte, kann das noch was anderes sein als ein Zahlenwert durch null? In meinem Programm bekomme ich nämlich diese Fehlermeldung aus heiterem Himmel. Vor ein paar Minuten war noch alles ok.
Delphi-Quellcode:
Nach dem Fehler bleibt die betreffende GaugeBar irgendwie im OnChange hängen.
procedure TFAnimus.gbTweakCameraZoomChange(Sender: TObject);
var zoom, x1,y1,z1, x2, y2, z2, newX, newY, newZ: Extended; begin zoom := gbTweakCameraZoom.Position/(gbTweakCameraZoom.Max); //max ist natürlich nicht 0 DecimalSeparator := '.'; x1 := (gbCamTweakerPosX.Position-gbCamTweakerPosX.Max div 2)/1000; //GaugeBars aus Graphics32 y1 := (gbCamTweakerPosy.Position-gbCamTweakerPosY.Max div 2)/1000; z1 := (gbCamTweakerPosZ.Position-gbCamTweakerPosZ.Max div 2)/1000; x2 := (gbCamTweakerTargetX.Position-gbCamTweakerTargetX.Max div 2)/1000; y2 := (gbCamTweakerTargetY.Position-gbCamTweakerTargetY.Max div 2)/1000; z2 := (gbCamTweakerTargetZ.Position-gbCamTweakerTargetZ.Max div 2)/1000; newX := MixValues(x1, x2, zoom); //hier kommt keine Division vor; ist eine einfache lineare Interpolation newX := MixValues(y1, y2, zoom); newZ := MixValues(z1, z2, zoom); LEcamX.Text := FloatToStr(newX); //hier kann es irgendwo sein, da nach der Fehlermeldung LEcamY.Text := FloatToStr(newY); //der Wert newY in LEcamX eingetragen wird.. LEcamZ.Text := FloatToStr(newZ); end; Das ist daran zu erkennen, dass der Anfasser nicht mehr einrastet und OnChange immer ausgeführt wird, sobald man die Maus über die Komponente hält. Vielen Dank schonmal im Voraus. |
Re: Ungültige Gleitkommaoperation
Auf die Schnelle fällt mir nur auf, dass Du 2 mal newX Werte zuweist, aber niemals newY.
Zitat:
|
Re: Ungültige Gleitkommaoperation
Das wird's sein. newY ist dann mit "Irgendwas" gefüllt, und dieses "Irgendwas" kann durchaus ein für Extended ungültiges Bitmuster sein, woraufhin sich FloatToStr() verschluckt.
Edit: "//hier kommt keine Division vor; ist eine einfache lineare Interpolation" - Wie kann man divisionsfrei lerpen? ;) |
Re: Ungültige Gleitkommaoperation
2 mal newX :oops: ...
das wars tatsächlich, vielen dank für die schnelle Lösung! lerpen... so heißt das also im coderslang, gut zu wissen. ;) Ich bin mal frech davon ausgegangen, dass keine division stattfindet, wenn 0 < t < 1 gegeben ist und Wert a und b damit multipliziert werden.
Delphi-Quellcode:
function MixValues(V1, V2, t: Extended):Extended;
var inv: Extended; begin inv := 1-t; Result := V1*inv+V2*t; end; |
Re: Ungültige Gleitkommaoperation
Jo, da hast du auch Recht, da war ich blöd :stupid:. Irgendwie war ich gestern auf dem Pfad, dass da irgendwo eine Normierung mit drin stecken müsste - warum auch immer. Sorry für die Verwirrung.
Warum das oft Lerp genannt wird weiss ich nicht einmal so genau, ich vermute dahinter irgendwie ein seltsames Kürzel für linear interpolation :D Und: Herzlich willkommen in der DP! :dp: |
Re: Ungültige Gleitkommaoperation
Zitat:
![]() |
Re: Ungültige Gleitkommaoperation
Hm, das festigte immerhin das "Das", aber zum "Warum" steht im Jargon File leider auch nicht viel mehr. Ich mag lerp trotzdem :) (Und danke für's Aufzeigen, dass ich zu faul war selbst genauer nachzuschauen :P)
|
Re: Ungültige Gleitkommaoperation
Bitte :tongue:
Und wenn es für dich ein Trost ist ... du kannst einfach behaupten du hättest gesucht, aber die deutsche Wiki meinte sie kenne Lerp nicht. Vielleicht isses einfach nur irgendein privates Kustwort, welches mal jemand so sagte und dann verwendeten es Alle, anstatt es auch mal zu hinterfragen? |
Re: Ungültige Gleitkommaoperation
Sowas in der Art muss das sein, jops =)
Und mit der Ausrede würd ich mir ja nochmal ins Bein schießen, die Englische WP ist grad bei solchen Dingen doch die #1 (unter den Wiki-Sprachversionen), wenn dann nur da :). Nein, ich trage meine Schande mit Würde! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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