![]() |
fmod problem?
hallo
hab mit fmod meinen eigenen player programmiert: siehe freeware forum: ![]() hab aber tierische probleme. irgendwie hab ich ein brett vorm kopf. ich verstehe einfach nicht, warum mein player unter windows 2000 mit der funktion "TRUNC" nicht zurechtkommt. wenn man meinen player auf "direct sound" einstellt, bekomme ich einen fehler (ungültige gleitkommaoperation). aber halt nur unter win 2000!!! was soll aber an so einem wert falsch sein "212,00" ??? ich weiss echt nicht mehr weiter. hab nun um alle TRUNC's ein try except und schreibe die stelle in ein log file. hängt das vielleicht mit fmod zusammen? dort wird im initialization teil die exception eigentlich ausgeschaltet.
Delphi-Quellcode:
kann mir jemand weiterhelfen?
var
Saved8087CW: Word; {$ifdef FPC} //FPC do not have this function in its RTL const Default8087CW = $1332; //according to the FPC site it's the value used in the //startup code. procedure Set8087CW( value :word ); Assembler; asm FLDCW value end; {$endif} initialization { Save the current FPU state and then disable FPU exceptions } Saved8087CW := Default8087CW; Set8087CW($133f); { Disable all fpu exceptions } finalization { Reset the FPU to the previous state } Set8087CW(Saved8087CW); |
Re: fmod problem?
hast du auch nen code, wo der trunc befehl einen fehler ergibt?!
|
Re: fmod problem?
Zitat:
Delphi-Quellcode:
zum bleistift 2:
dCurrentR:= 212.2
dCurrentG:= 212.2 dCurrentB:= 212.2 Canvas.Brush.Color := rgb(trunc(dCurrentR), trunc(dCurrentG), trunc(dCurrentB));
Delphi-Quellcode:
function getTimeDblSecStr (ATimeSec: Double): string;
var i : integer; begin try i:= TRUNC (ATimeSec); except GlobalData. SaveToFehlerLog ('TRUNC Fehler getTimeDblSecStr!'); Result:= '0:00'; EXIT; end; Result:= getTimeSecStr (i*1000); // wandelt integer in string um: 05:00 zum bsp end; |
Re: fmod problem?
Hi, Schon mal mit Round versucht ob es da auch Fehler gibt oder ist es zu ungenau ?
|
Re: fmod problem?
Zitat:
wenn ich das succesive mache, kommt der fehler bei der zuvor aufgerufenen TRUNC funtion. anscheinend passiert der fehler immer bei der letzten ausgeführten TRUNC funktion. leider ist es auch nicht hilfreich jetzt alle TRUNC's durch ROUND's zu ersetzen, da an einigen stellen dies zu ungenau ist. ich hoffe nicht, dass das ein compilier problem ist. hab meinen player unter win xp prof sp2 compiliert mit delphi 5 ent. tschau |
Re: fmod problem?
Versuch mal Int64 und nicht Integer ( function Trunc(X: Extended): Int64 )
|
Re: fmod problem?
Zitat:
wenn ich diese änderung mache und dann unter win 2000 compiliere geht's. ist aber erlich gesagt, nicht das was ich will. ich möcht nicht tausend betriebssystem haben und dann jeweils darunter compilieren. :coder: was ist denn zwischen Int64 (win xp) unt Int64 (Win 2000) unterschiedlich? :gruebel: so: nu is aber für heut schluss, ab in den biergarten und fussball schauen! :cheers: |
Re: fmod problem?
Tja... ?
Was gibt Delphi denn für Fehlermeldung beim ausfhüren? Fehler mit einer EInvalidOp-Exception abfangen ?! |
Re: fmod problem?
Zitat:
die EInvalidOp fang ich ja auch schon ab. ich weiss auch nicht mehr weiter. ich werde glaube ich auch mal im fmod forum posten, da ich den verdacht habe, dass es an fmod liegt. trotzdem danke! |
Re: fmod problem?
so ich hab jetzt mal im fmod forum gestöbert und das hier gefunden, was mir auch weitergeholfen hat.
verstehen kann ich es trotzdem nicht. ![]() was ist denn zwischen der delphi funktion und der im forum geposteten anders (versteh leider nicht so viel assembler). Delphi TRUNC:
Delphi-Quellcode:
gepostete TRUNC
function Trunc(X: Extended): Int64;
const cwChop : Word = $1F32; procedure _TRUNC; asm { -> FST(0) Extended argument } { <- EDX:EAX Result } SUB ESP,12 FSTCW [ESP] FWAIT FLDCW cwChop FISTP qword ptr [ESP+4] FWAIT FLDCW [ESP] POP ECX POP EAX POP EDX end;
Delphi-Quellcode:
const
// FPU status flags (high order byte) cwChop : Word = $1F3F; function Trunc64(v : Extended) : Int64; register; asm SUB ESP,12 FSTCW [ESP] FLDCW cwChop FLD v FISTP qword ptr [ESP+4] FLDCW [ESP] POP ECX POP EAX POP EDX end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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