![]() |
[gelöst] Warum Integer-Overlow
Hallo zusammen,
Meinem Verständnis nach weiße ich doch das Ergebnis der Berechnung einem Extended zu, da verstehe ich eben nicht, wo es zu einem Integer-Overflow kommen soll...
Delphi-Quellcode:
Eine Lösung habe ich natürlich, nur verstehe ich sie eben nicht wirklich...
fQualityFactor, tOvr, tAud : extended;
fTSize, fWidth, fHeight, fFrameCount : integer; ... fQualityFactor := (1024 * fTSize - (tAud + tOvr)) / (fWidth * fHeight * fFrameCount);
Delphi-Quellcode:
fTSize, fWidth usw. gleich als WExtended zu deklarieren, macht meiner Meinung keinen Sinn, da diese Werte immer nur Integer-Charakter haben, soll heißen: das Bild einer Video-Datei kann eben immer nur ganzzahig viele Pixel hoch sein etc.
fQualityFactor, tOvr, tAud : extended;
fTSize, fWidth, fHeight, fFrameCount : integer; extTSize, extWidth, extHeight, extFrameCount : extended; ... extTSize := fTSize; extHeight := fHeight; extWidth := fWidth; extFrameCount := fFrameCount; fQualityFactor := (1024 * extTSize - (tAud + tOvr)) / (extWidth * extHeight * extFrameCount); Wäre schön, wenn mir jemand meinen Fehler aufzeigen könnte. |
Re: Warum Integer-Overlow
Weil einzeln gerechnet wird.
fWidth * fHeight * fFrameCount wird wohl zu groß werden. |
Re: Warum Integer-Overlow
Das Ergebnis deiner Berechnung wird zwar einem extended zugwiesen aber es werden keine extended werte multipliziert sondern Integerwerte. Dementsprechend werden Integeroperationen angewendet. Erst wenn das Ergebnis berechnet wird kommt der Extended ins Spiel.
|
Re: Warum Integer-Overlow
Zitat:
Zitat:
Wieder was gelernt. Danke |
Re: [gelöst] Warum Integer-Overlow
du könntest eines der Elemente zu Extendet casten. Ich glaube dann werden die anderen auch im Context des Extendet multipliziert. Bin mir aber nicht sicher.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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 by Thomas Breitkreuz