![]() |
Generelles Zeitproblem mit Directx 8-9
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo zusammen,
hoffe einer von euch kennt das problem bzw. hat eine Lösung parat. Habe schon in diversen anderen Foren gesucht und geschaut aber keine lsg für mein Problem gefunden. Zudem bin ich nicht sicher was genau der Fehler ist. Ich gebe die eine zeit vom Typ TDateTime aus: z.b. date ist 01.01.2000 bevor Directx Instanz erstellt worden ist showMessage(DateToStr(Date)); ///gibt 01.01.2000 aus erstelle directx Instanz showMessage(DateToStr(Date)); ///gibt 31.12.1999 aus
Code:
procedure TSampleForm.FormActivate(Sender: TObject);
var tmpDate:TShortDate; begin tmpDate:='01.01.2005'; showMessage(dateToStr(tmpDate)); /// shows 01.01.2005 InitDirect3D; showMessage(dateToStr(tmpDate)); /// shows 31.12.2005 RunDirect3D; ExitDirect3D; HandleErrors; Close; end; Vermutung: Es kommt zu einem Converting Fehler wegen der Precision von Delphi zu C++. -> Jahr wird wegen der ungenauigkeit in der xten stelle zum schaltjahr, warum auch immer... Hoffe einer von euch kann mir mehr dazu sagen. Gruß Mario |
Re: Generelles Zeitproblem mit Directx 8-9
Zitat:
Warum das so ist weiss ich nicht, genausowenig kann ich mir vorstellen, dass es an DirectX liegt. Zumindest greift die API keine dieser lokalen Variablen an. Wie ist denn TShortDate deklariert? greetz Mike |
Re: Generelles Zeitproblem mit Directx 8-9
hi mike,
erstmal vielen dank für deine mühen. also eigentlich ist es eher ein type TDateTime = type Double; oder type TShortDate= type TDateTime; das TShortDate habe ich nur aus dem FF geschrieben und mich dort wohl geirrt. In der Application wird TDateTime verwendet. Ich hatte bis zur assemblerebene debuggt, kenne mich leider aber noch zu wenig mit assembler aus um sagen zu können was jetzt der genaue fehler ist. Dieser Fehler tritt bis jetzt bei allen DirectX Versionen in verb mit delphi auf. Gibt es eine Möglichkeit diesen Fehler zu umgehen? z.b. die Precision herunterschrauben auf Single ? War in sovielen Foren und habe nachgelesen aber nichts gefunden um diesen Fehler auch nur als Workaround beheben zu können. Gruß, Konse PS: Das beispiel was ich dort angehängt habe ist von das standartbeispiel von clootie. ![]() |
Re: Generelles Zeitproblem mit Directx 8-9
Workarounds:
die precision auf extended setzen nachdem DXinit aufgerufen worden ist. Das CreateDevice mit D3DCREATE_FPU_PRESERVE Flag aufrufen, somit wird die default extended precision von delphi verwendet. Warum das jetzt generell auftritt weiss ich immer noch nicht ;-) Gruß, Konse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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